我知道有很多跨域问题,但是我还没能找到我要找的。
我想让客户端AJAX请求从a.com到b.com,这显然是不允许的。我认为,如果我创建了b.a.com -> b.com CNAME记录,那么浏览器将允许此请求,因为这意味着拥有a.com域的任何人都想明确地允许对b.com的请求,但我仍然得到一个访问控制允许起源错误,不允许请求。是否不可能使此请求发生与CNAMEs?
注意:我无法控制b.com,所以我不能在那里设置标题
No。(但我有一个真正的解释)
"跨域请求"的"规则"一般由"同源政策"管理(参见:W3C评论,维基百科,谷歌浏览器安全手册,Mozilla开发者网络)
W3C特别声明:
来源由URL的方案、主机和端口定义。
根据这个定义,即使从foo.com
到bar.foo.com
的请求也会被阻塞。
在您的示例中,您建议为bar.foo.com
创建指向bar.com
的CNAME
(我假设您有错字)应该允许通过bar.foo.com
请求bar.com
。但是,正如我上面所说的,即使来自foo.com
的请求在客户端也会被阻止向bar.foo.com
发出HTTP请求。
Mozilla的页面甚至有这个具体的例子:
Mozilla认为两个页面具有相同的来源,如果协议,端口(如果指定了)和主机对于两个页面都是相同的。的下表给出了URL的来源比较示例http://store.company.com/dir/page.html:
URL |结果|原因
http://store.company.com/dir2/other.html | Success
http://store.company.com/dir/inner/another.html | Success
https://store.company.com/secure.html |失败|协议不同http://store.company.com:81/dir/etc.html |失败|端口不同http://news.company.com/dir/other.html |失败|不同主机
No.
我从来没有听说过CNAME作为一种绕过这个问题的方法,所以我认为可以肯定的是,它不是解决你问题的方法。