ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

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

2019-10-10 01:55:02  阅读:210  来源: 互联网

标签:javascript php ajax cors cross-domain


经过数天的网络浏览并尝试了所有可能的方法,我才知道主机服务器存在问题.它已被我的主机服务器禁用.因此,我想到将代码发布在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 onl oad='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 

如果您在实现任何这些方面遇到困难,请发表评论.您可以观看我提到的here的现场演示

标签:javascript,php,ajax,cors,cross-domain
来源: https://codeday.me/bug/20191010/1883397.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有