使用PHP和Javascript通过CORS实现站点之间的跨域通信

2024-04-03

经过几天的网络浏览并尝试了所有可能的方法后,我开始意识到我的主机服务器存在问题。它被我的主机服务器禁用。所以,我想把我的代码发布到 Stackoverflow 上,这样,SO 上的其他人就不会像我一样浪费时间了。

该代码片段在 IE、Safari、Mozilla 和 Chrome 上完美运行。


客户端的 Javascript 代码

<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();'>

服务器端所需的部分代码。您需要设置可以请求页面内容的来源(referrers),允许方法和标题。这些设置可以存储在您发出请求的第二个域上的所有文件的 .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 

如果您在实施这些措施时遇到困难,请发表评论。你可以观看我提到的现场演示here http://compare.buyhatke.com/products/apple-ipod-touch

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用PHP和Javascript通过CORS实现站点之间的跨域通信 的相关文章

随机推荐