ajax出现XMLHttpRequest cannot load 跨域问题解决办法

大家在做站群或者子站点时候,不同功能的系统使用独立的一个域名,各系统之间存在相互调用的关系。使用js的XMLHttpRequest调用其他域名提示跨域权限不足。有些可能认为都同属于同一个顶级域名或者说域名一模一样怎么会存在跨域问题. 先来看下错误 XMLHttpReq
大家在做站群或者子站点时候,不同功能的系统使用独立的一个域名,各系统之间存在相互调用的关系。使用js的XMLHttpRequest调用其他域名提示跨域权限不足。有些可能认为都同属于同一个顶级域名或者说域名一模一样怎么会存在跨域问题.
先来看下错误
“XMLHttpRequest cannot load http://m.genban.org/api/post?id=1&msg=123123123&code=453423 Origin http://www.genban.org is not allowed by Access-Control-Allow-Origin.”
什么是Access-Control-Allow-Origin
Access-Control-Allow-Origin是HTML5中定义的一种服务器端返回Response header,用来解决资源(比如字体)的跨域权限问题。
它定义了该资源允许被哪个域引用,或者被所有域引用(google字体使用*表示字体资源允许被所有域引用)。
什么是资源跨域权限
先来看看同域和不同域的长相
相同域
http://www.genban.org/
http://www.genban.org/moban
不同域
http://www.genban.org
http://m.genban.org
https://www.genban.com
由此可见,相同域必须忙住协议相同、端口相同、域名相同. 只要其中一点不满足那就是跨域
跨域案例
站点www.genban.org需要调用m.genban.org/api/post.php,那么这个post.php必须加上如下代码
 
代码1
 
header("Access-Control-Allow-Origin: http://www.genban.org");
 
代码2
 
header方式不能使用正则,例如*.ttlsa.com,不过我们可以使用如下方法,将内容echo到php响应内容中
 
echo '<meta http-equiv="Access-Control-Allow-Origin" content="*.genban.org">';
 
目前还不清楚为什么header里面用不了正则,而meta里面可以用正则.后续查找原因,知道的兄弟请留言告知,小生在此谢过.
从上面的代码可以看出, 代码1安全性不够,但是使用接口的人只会获取到响应的body内容。代码2相对安全,但是响应的body内容体里面包含
,多少影响接口的使用.
本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

安装 Apache 出现 OS 10013 以一种访问权限不允许的方式做了一个访问套接字的尝试 如下截图: 提示: make_sock: could not bind to address 0.0.0.0:80 这个问题有由于计算机上安装了IIS7,80端口已占用。 打开Apache 的配置文件 Apache安装目录下的conf/htt
出现503错误,其日志都是记录在%Systemroot%\System32\LogFiles\HTTPERR\httperr1.log中。 其中的s-reason项: 1、若为AppShutdown,可能是由于CPU占用率太高导致自动关闭应用程序池。 2、若为AppOffline,可能是由于应用程序标识出错引起的。 3、若为Disabl
前段时间安装了swftools可以将pdf转换为swf文件,然后配合一个 FlexPaper ,就可以做成和百度图文库类似的东东了. 但是今天,我们开发的同事告诉我说pwd转换的这个会有乱码问题,我看了一下果然是乱码了. 果断打开百度,看了一下主要是由于没有相应的字体文件,所
打开自己的网站时会出现:浏览器安全检查中。。。xxx。com 然后 几秒钟过后才能进入我自己的站。。这到底是怎么回事呢? 解决方法:将安全选项中的浏览器安全检查关闭或检查CC防御如等级过高请适当调低。您可以将CC强力防护规则调整至非强力防护的任一级别,
当iis伪静态中文url出现乱码时该如何解决呢,此篇文章为大家提供了解决的方案,有需要的可以来看看。 首先要看下你安装的是IIS rewrite_2.0还是ISAPI_Rewrite 3.x的伪静态插件。 如果你安装的是IIS rewrite_2.0的话,传递的参数都是UTF-8格式的,如果你网站
由于b/s项目中使用到了一个打印控件,在客户端需要安装exe文件,但在下载此exe文件过程中现在无法下载的问题。超时大概5分钟后出现CGI Timeout的错误。