我有3个网站,A,B和C.访问控制允许来源htaccess
网站A有一个“test.js”javascript文件,我打电话在网站B和C. test.js文件使用XMLHttpRequest获取站点A上单独的“stuff.html”文件的内容,以返回到调用网站上的div。
为了允许在刚B和C点CORS基础上this answer on StackOverflow和其他几个人,我把下面的.htaccess在网站目录:
<IfModule mod_headers.c>
SetEnvIf Origin "http(s)?://(www\.)?(b.com|c.com)$" AccessControlAllowOrigin=$0
Header add Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
Header append Vary Origin
</IfModule>
当我尝试加载网站B,它似乎工作。但是,当我尝试加载据点C在同一个浏览器,我得到以下错误:
XMLHttpRequest cannot load http://www.a.com/stuff.html. The 'Access-Control-Allow-Origin' header has a value 'http://www.b.com' that is not equal to the supplied origin. Origin 'http://www.c.com' is therefore not allowed access.
这就是说,如果我清除缓存,然后装载场C,它的工作原理。但是,然后加载站点B不起作用,并给出相同的错误(反过来)。
有没有办法让这个,让它允许两个网站正确加载它?不知道我可能会错过这里。
编辑:
位的测试之后,我也发现,使用通配符解决此问题:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin *
</IfModule>
...虽然我不知道有关的安全性因为它对所有人开放。假设stuff.html只是一个带锚链接的静态html文件,test.js做的唯一事情就是将该文件的内容返回给客户端页面,有什么需要担心的吗?不知道这是否会被恶意使用。
请确认是否工作! –
谢谢你的回复,但不幸的是它没有工作,我仍然有像以前一样的错误。 –