【问题标题】:Is it possible to allow cross-domain requests through the use of CNAME records?是否可以通过使用 CNAME 记录来允许跨域请求?
【发布时间】:2011-12-23 11:21:55
【问题描述】:

我知道有很多跨域问题,但我一直找不到我要找的东西。

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

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

【问题讨论】:

    标签: ajax cross-domain cname


    【解决方案1】:

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

    “跨域请求”的“规则”通常受“同源策略”的约束(参见:The W3C CommentaryWikipediaGoogle Browser Security HandbookMozilla Developer Network

    W3C 特别声明:

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

    根据这个定义,即使是从foo.combar.foo.com 的请求也会被阻止。

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

    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 |失败 |不同的主机

    【讨论】:

      【解决方案2】:

      没有。

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

      【讨论】:

        猜你喜欢
        • 2020-07-22
        • 2012-11-03
        • 2017-03-07
        • 1970-01-01
        • 2015-10-11
        • 2016-03-03
        • 1970-01-01
        • 1970-01-01
        • 2012-08-25
        相关资源
        最近更新 更多