【发布时间】:2012-03-16 15:02:28
【问题描述】:
经典的“访问控制允许来源不允许来源...”问题。两台机器为同一个网站提供内容。当机器 A 通过 jquery 执行 $('#main').load('link_to_resource_on_B') 时,机器 B 使用 mod_python 提供内容,并添加 Access-Control-Allow-Origin: * 标头。但是由于某种原因,这仍然不起作用。我在 Chrome、Safari 和 Internet Explorer 上对此进行了测试。我通过命令行进行了测试以检查响应标头,似乎Access-Control-Allow-Origin: * 成功位于 B 的标头中。见下文。我可能会错过什么?
$ telnet localhost 80
Trying ::1...
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
GET /tests/python/test/env HTTP/1.1
host: 10.0.1.10
HTTP/1.1 200 OK
Date: Mon, 27 Feb 2012 02:05:33 GMT
Server: Apache/2.2.20 (Ubuntu)
Access-Control-Allow-Origin: *
Vary: Accept-Encoding
Transfer-Encoding: chunked
Content-Type: text/html
【问题讨论】:
-
是否有客户端设置的自定义标头?自定义标头(或非 GET HTTP 方法)可能会触发预检请求,这需要额外处理。
-
感谢您的提示,@monsur。你是对的,它是 OPTION 标头,并没有像看起来那样处理。一项小研究还告诉我,我的 jquery 太旧了。较新的 jquery(自 1.5.2 起)故意避免使用客户标头。所以归结为,我升级了我的 jquery,我的头痛就消失了。对于其他患有相同症状的人,此链接为我提供了启蒙的后半部分。 http://remysharp.com/2011/04/21/getting-cors-working/
-
@josh3736,感谢您帮助我格式化我的初始帖子。那是我的第一篇文章。下次知道该怎么做。
标签: mod-python cors