经过几天的网络浏览并尝试了所有可能的事情,我才知道主机服务器存在问题。它已被我的主机服务器禁用。因此,我想到将代码发布在Stackoverflow上,这样,在SO上没有其他人会像我那样浪费时间。
该代码段可在IE,Safari,Mozilla和Chrome上正常运行。
客户端的Java代码
<script type='text/javascript'> // function for making an object for making AJAX request function getXMLHTTPRequest() { try { req = new XMLHttpRequest(); } catch(err1) { try { req = new ActiveXObject("Msxml2.XMLHTTP"); } catch (err2) { try { req = new ActiveXObject("Microsoft.XMLHTTP"); } catch (err3) { req = false; } } } return req; } var http899 = getXMLHTTPRequest(); function searchFabIndia() { var myurl = "http://my2nddomain.com/yebhi.php"; myRand = parseInt(Math.random()*999999999999999); var modurl = myurl+"?rand="+myRand; http899.open("GET", modurl, true); http899.onreadystatechange = useHttpResponse899; http899.send(null); } function useHttpResponse899() { if (http899.readyState == 4) { if(http899.status == 200) { // do all processings with the obtained values / response here } } } </script> <body onload='searchFabIndia();'>
服务器端所需的部分代码。您需要设置可以询问页面内容,允许方法和标题的来源(引荐来源)。这些设置可以与您要向其请求的第二个域上的所有文件一起存储在.htaccess文件中,也可以将它们放置在特定的PHP文件中,如下所示:
<?php header("Access-Control-Allow-Origin: *"); header("Access-Control-Allow-Methods: GET, POST, OPTIONS, PUT, DELETE"); header("Access-Control-Allow-Headers: Content-Type, Depth, User-Agent, X-File-Size, X-Requested-With, If-Modified-Since, X-File-Name, Cache-Control"); header("Access-Control-Max-Age: 18000"); // Put it in your PHP file ?>
否则,您可以通过在.htaccess文件中提及相同的设置来为整个域/子域指定这些设置,如下所示:
<IfModule mod_headers.c> <FilesMatch "\.(php)$"> Header set Access-Control-Allow-Origin: * Header set Access-Control-Allow-Methods : POST,GET,OPTIONS,PUT,DELETE </FilesMatch> </IfModule>
同样不是所有的引荐来源网址有时都不需要通配符,因此,在这种情况下,您可以通过命名它们来指定特定的域/子域,每个域/子域都用逗号分隔,如图所示
Header set Access-Control-Allow-Origin: http://abc.com,http://def.com,http://ghi.com
如果您在实施这些方法时遇到困难,请发表评论。您可以观看我在这里提到的现场演示