6

我知道有很多跨域问题,但我一直无法找到我正在寻找的东西。

我想从 a.com 向 b.com 发出客户端 AJAX 请求,这显然是不允许的。我认为如果我创建了一个 bacom -> b.com CNAME 记录,那么浏览器将允许此请求,因为这意味着拥有 a.com 域的任何人都希望明确允许对 b.com 的请求,但我仍然得到一个 Access-不允许请求的 Control-Allow-Origin 错误。是否无法使用 CNAME 进行此请求?

注意:我无法控制 b.com,所以我不能在那里设置标题。

4

2 回答 2

10

不。(但我有一个真实的解释)

“跨域请求”的“规则”通常由“同源策略”管理(参见:W3C 评论维基百科谷歌浏览器安全手册Mozilla 开发者网络

W3C 特别声明:

来源由 URL 的方案、主机和端口定义。

根据这个定义,即使来自foo.comto 的请求bar.foo.com也会被阻止。

在您的示例中,您建议创建一个CNAMEfor bar.foo.comwhich 点bar.com(我假设您有错字)应该允许请求bar.comvia bar.foo.com。但是,正如我上面所说,即使来自 的请求foo.com也会在客户端被阻止向bar.foo.com.

Mozilla 的页面甚至有这个具体的例子:

如果两个页面的协议、端口(如果指定)和主机相同,则 Mozilla 认为两个页面具有相同的来源。下表给出了与 URL 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://store.company.com:81/dir/etc.html | 失败 | 不同端口 http://news.company.com/dir/other.html | 失败 | 不同的主机

于 2011-12-23T01:37:21.820 回答
1

不。

我从未听说过 CNAME 作为解决此问题的一种方式,因此我认为可以安全地假设它不是解决您问题的方法。

于 2011-12-22T22:49:40.370 回答