我知道有很多跨域问题,但我找不到我想要的东西。
我想从a.com向b.com发出客户端AJAX请求,这显然是不允许的。我想如果我创建了一个b.a.com - > b.com CNAME记录然后浏览器将允许此请求,因为这意味着拥有a.com域名的任何人想要明确允许对b.com的请求,但我仍然得到一个没有的Access-Control-Allow-Origin错误允许请求。是否无法通过CNAME进行此请求?
注意:我无法控制b.com,所以我无法在那里设置标题。
答案 0 :(得分:10)
没有。 (但我有一个真正的解释)
“跨域请求”的“道路规则”通常由“同源政策”管理(请参阅:The W3C Commentary,Wikipedia,Google Browser Security Handbook,{{ 3}})
W3C明确指出:
原点由URL的方案,主机和端口定义。
根据此定义,即使来自foo.com
到bar.foo.com
的请求也会被阻止。
在您的示例中,您建议为CNAME
bar.foo.com
创建一个指向bar.com
的{{1}}(我假设您有拼写错误)应该允许bar.com
的请求通过bar.foo.com
。但是,正如我上面所述,即使来自foo.com
的请求也会在客户端阻止向bar.foo.com
发出HTTP请求。
Mozilla的页面甚至有这个具体的例子:
如果协议,Mozilla认为两个页面具有相同的来源, port(如果指定了一个),并且两个页面的主机相同。该 下表给出了与URL进行比较的示例 Mozilla Developer Network:
网址|结果|原因
http://store.company.com/dir/page.html |成功
http://store.company.com/dir2/other.html |成功
http://store.company.com/dir/inner/another.html |失败|不同的协议 https://store.company.com/secure.html |失败|不同的端口 http://news.company.com/dir/other.html |失败|不同主持人
答案 1 :(得分:1)
没有
我从来没有听说过CNAME是解决这个问题的一种方法,所以我认为可以安全地假设它不是解决问题的方法。