【问题标题】:Document.domain not functioning as I'm expectingDocument.domain 没有按我的预期运行
【发布时间】:2011-06-16 17:32:31
【问题描述】:

我希望通过位于 bar.domain.com 的代理访问 API。我正在通过位于 foo.bar.domain.com 上的脚本访问它。所以我当然遇到了same origin policy

在 foo.bar.domain.com 上加载的第一个脚本的顶部,我设置了document.domain = "bar.domain.com"

在检查器中,如果我在此行之后立即暂停执行并检查 document.domain,它会返回 bar.domain.com。与在 .ajax 触发之前暂停相同,与在所有 javascript 运行后检查相同。

不幸的是,我仍然收到:Origin @987654322@ is not allowed by Access-Control-Allow-Origin.

我希望我能举一个活生生的例子,唉,我被要求不要:/

关于如何修复或调试此问题的任何想法?非常感谢您提供的任何帮助。

【问题讨论】:

  • 您还在使用相同的协议吗? Domain.com 实际上是一个 .com 域?你用什么浏览器试试这个?你不是交换端口吗?你能显示一些代码吗?
  • 我们确实使用相同的协议和端口。我在我的代码中使用 requireJS,所以这里是受影响部分的一个非常简化的模型:jsfiddle.net/WSEue

标签: javascript ajax cross-domain access-control


【解决方案1】:

我认为两个站点都需要将document.domain 设置为“bar.domain.com”,因为两个页面都必须明确表明它们愿意进行互操作。 “bar.domain.com”页面已经有与document.domain 相同的字符串并不重要——它仍然必须显式设置它。

Here 是一个带有一些解释的 MDC 页面。

【讨论】:

  • 目前正在消化这个。鉴于他们在底部的注释,您的想法似乎是正确的。我很惊讶在 MDC 或其他探索 document.domain 的地方没有更明确地说明这一点。或者,也许我只是错过了很多次……会在短时间内报告。
  • 说同样的话on the MSDN page
猜你喜欢
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 2017-09-28
  • 1970-01-01
  • 2017-09-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多