Cross-Origin Request Blocked

在写一个Ajax应用时出现这个问题,我在某个页面a.html中,通过ajax调用另一个页面b.php, 然后将b.php的输出显示在a.html的某div中。但是,b.php成功运行,b.php的结果却总是没有写到a.html中的div中。

打开firefox的console,提示说“Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://www.bagualu.net/xxx/b.php. This can be fixed by moving the resource to the same domain or enabling CORS.”

于是去看了下什么是CORS,明白这个结果没有被显示是因为浏览器出于安全的考虑,不会加载跨域资源。也就是说a.html和b.php不在同一个站点(域名不一样或者端口不一样),导致浏览器不会加载b.hph的输出到a.html中。

然后看解决方法:官方解决方案在这里

需要做的是使b.php的输出带有头
Access-Control-Allow-Origin “*”

其中的*,也可以是某个具体的网站,这里*表示所有的网站。
为了做到这一点,可以在apache中启用模块mod_header,可以用命令行


a2enmod headers

来实现。
启用这个模块的同时需要在apache的config中加上

 <IfModule mod_headers.c>        

 Header set Access-Control-Allow-Origin "*"      

 </IfModule>

之后重启apache,这样,b.php的内容就可以被加载到不同网站的页面a.html中去了。



本文地址: http://www.bagualu.net/wordpress/archives/3997 转载请注明




发表评论

电子邮件地址不会被公开。 必填项已用*标注