112

我现在遇到了一个奇怪的 CORS 问题。

这是错误消息:

XMLHttpRequest cannot load http://localhost:8666/routeREST/select?q=[...] 
Origin http://localhost:8080 is not allowed by Access-Control-Allow-Origin

两台服务器:

  • localhost:8666/routeREST/ :这是一个简单的 Python Bottle 服务器。
  • localhost:8080/ :我运行 y Javascript 应用程序的 Python simpleHTTPserver。这个应用程序正在上面的服务器上执行 Ajax 请求。

关于可能是什么问题的任何想法?

编辑:

而且...港口是问题所在。感谢您的回答:)

如果有人也在使用 Python 瓶服务器,您可以按照这篇文章中给出的答案来解决 CORS 问题: Bottle Py:为 jQuery AJAX 请求启用 CORS

4

2 回答 2

150

只有协议主机 端口相同时才认为相同:同源策略

如果要启用它,您必须通过添加标题来遵循跨域资源共享 (cors) 。Mozilla有例子

您需要在响应中添加 Access-Control-Allow-Origin 作为标题。允许每个人(你可能应该这样做):

Access-Control-Allow-Origin: *

如果您需要支持多个来源(例如example.comwww.example.com),请将Access-Control-Allow-Origin您的回复中Origin

另请注意,某些请求使用 OPTION 方法发送预检请求,因此如果您编写自己的代码,您也必须处理这些请求。有关示例,请参见 Mozilla 。

于 2013-11-13T23:45:22.547 回答
35

端口号不同。

如果任何方案、主机名或端口不匹配,则请求被视为跨域。

于 2013-11-13T23:46:07.657 回答