同一个域上的 CORS 错误?

IT技术 javascript python ajax cross-domain cors
2021-01-20 14:57:40

我现在遇到了一个奇怪的 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/ : Python simpleHTTPserver,我在其中运行 y Javascript 应用程序。这个应用程序正在上面的服务器上执行 Ajax 请求。

有没有想过可能是什么问题?

编辑:

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

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

2个回答

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

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

您需要在响应中添加 Access-Control-Allow-Origin 作为标头。为了让所有人(你可能应该这样做):

Access-Control-Allow-Origin: *

如果您需要支持多个来源(例如example.comwww.example.com),请Access-Control-Allow-Origin在您的回复中将 设置为Origin来自请求-header的值(在您确认 Origin 被列入白名单之后。)

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

请注意,对于像GETPOST和 之类的简单请求默认情况下不会发送预检请求HEAD有关其他详细信息,请参阅答案中链接MDN 文章
2021-03-19 14:57:40
@SeldomNeedy 你不能有重复的标题
2021-03-26 14:57:40
@MikeFlynn 我的措辞诚然有点松散,但我并不是想提出这个建议;服务器只需要配置为根据请求发送适当的标头。
2021-04-02 14:57:40
作为附录这样的回答,请注意,'Access-Control-Allow-Origin: https://example.com'不是等同于'Access-Control-Allow-Origin: https://www.example.com'如果您的网站可以通过这两种方式访问​​,则您的响应标头中应该同时包含两者。
2021-04-05 14:57:40
这应该用红色、大写字母和粗体在 AJAX 参与的所有地方突出显示
2021-04-10 14:57:40

端口号不同。

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

包括 443 和 80
2021-03-17 14:57:40
对问题的确认如何才能解决问题?贴个答案吧哥们。
2021-03-29 14:57:40
除了 443 和 80。
2021-04-04 14:57:40