CORS阻止jQuery的POST请求

0 投票
1 回答
767 浏览
提问于 2025-04-17 22:09

我正在尝试从一个静态页面发送请求,假装它是一个远程网络服务器,然后把这个请求发到我的 Flask 应用上,这个应用是通过 uwsgi 运行的,因为我用到了 Flask-uWSGI-WebSocket

每次我向我的服务器发送请求时,都会因为 CORS 被阻止。CORS 是一种安全机制,意思是:

XMLHttpRequest 无法加载 http://127.0.0.1:5000/tnw/post。请求的资源上没有 'Access-Control-Allow-Origin' 这个头信息。因此,来源 'null' 是不被允许访问的。

我已经安装了 flask-cors,并且把允许的来源设置为 *,但我还是无法通过这个请求。还有什么我遗漏的呢?

我的 POST 请求代码是:

$("#ajaxbutton").click(function() { var json = JSON.stringify(generate_json()); $.post('http://127.0.0.1:5000/tnw/post', json); });

1 个回答

2

我觉得可能有两个问题:

  • 你可能是通过 file:// 协议访问页面,而不是 http://。这样会导致你的 origin 变成 'null'。试着用 http:// 来访问,比如可以用 python -m SimpleHTTPServer 来启动一个简单的服务器。

  • 你的接口是否需要基于 cookie 的认证?默认情况下,jQuery 在 CORS 请求中不会发送 cookie。如果你需要在请求中发送 cookie,可以在你的 ajax 请求中添加 {xhrFields: {withCredentials: true}} 这个设置(文档)。

撰写回答