我正在尝试使用 交叉原始资源共享 带有访问控制 - 允许原素和相关标头。我在Firefox上工作了,但是Chrome给了我许可错误,看起来像:

XMLHttpRequest cannot load <remote>. Origin <local> is not allowed by Access-Control-Allow-Origin.

网络检查员显示了请求,但没有响应(并且不包括选项前飞行请求和响应)。我使用卷发检查了请求输出并重现所有标题,我看到的内容适合规范所暗示的内容(再次,Firefox接受的内容)。我很茫然如何再进行一次调试 - 是否有比Chrome通常提供的网络活动的技巧?有关Chrome如何解释CORS请求的信息与Firefox不同?

有帮助吗?

解决方案

我怀疑您看到的是前飞行前,随后是由于错误而出现的镀铬请求。这可以解释为什么事情在Firefox中起作用,而在Chrome中不起作用。

您是否在请求中发送任何自定义标题? WebKit中有一个错误,其中具有自定义标头的获取请求失败(在这里错误: http://code.google.com/p/chromium/issues/detail?id=57836)。我还注意到,Chrome有时会期望访问控制中的内容类型标头列表中,即使内容类型是一个简单的标头,也会期望内容型标题。

另外,您提到网络检查员不包括前飞行的选项吗?您正在使用哪个网络检查员?我建议使用Wireshark,因为这为您提供有关Chrome Inspector不提供的实际网络流量的详细信息(例如,Wireshark将记录前飞行请求)。

其他一些调试技巧:

在Safari中尝试该请求。这将有助于将其缩小到Chrome错误或Webkit错误。

我看到您看到的错误的时间(Wireshark显示了一个请求,但没有响应),这是因为我的服务器不包含访问控制 - 允许原始标头,因为Chrome ISN' t发送原始标头(请参见上面的错误)。在您的网络跟踪中,您是否在请求中看到了原始标题?您是否可以控制服务器,如果是这样,它是否会收到原始标头?

在没有更多细节的情况下,很难调试实际问题。如果您仍然有问题,您可以在此处发布请求/响应标头吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top