Flask-CORS不适用于POST,但适用于GET

时间:2016-09-17 19:32:05

标签: python flask cors axios flask-cors

我在本地运行Flask-Restful API并从其他端口发送包含JSON的POST请求。我收到了错误

No 'Access-Control-Allow-Origin' header is present on the requested resource.

然而,当我跑

curl --include -X OPTIONS http://localhost:5000/api/comments/3
        --header Access-Control-Request-Method:POST
        --header Access-Control-Request-Headers:Content-Type
        --header Origin:http://localhost:8080

我得到了

HTTP/1.0 200 OK
Content-Type: text/html; charset=utf-8
Allow: HEAD, GET, POST, OPTIONS
Access-Control-Allow-Origin: http://localhost:8080
Access-Control-Allow-Methods: DELETE, GET, HEAD, OPTIONS, PATCH, POST, PUT
Vary: Origin
Access-Control-Allow-Headers: Content-Type
Content-Length: 0

将“Access-Control-Allow-Origin”显示为“*”。 GET工作正常,只是POST给出了这个错误。怎么可能出错?如果相关,对于我正在使用的前端做出反应并通过axios请求。

3 个答案:

答案 0 :(得分:2)

您必须将Foreground添加到烧瓶应用程序中。

希望能解决问题。

答案 1 :(得分:1)

Flask-Cors文档解释了为什么会发生这种情况

  

“使用JSON跨源时,浏览器将对POST请求发出预检OPTIONS请求。为了使浏览器允许JSON内容类型的POST请求,必须允许Content-Type标头。最简单的方法是这样做仅仅是为了在您的应用程序上设置CORS_HEADERS配置值:例如“

https://flask-cors.readthedocs.io/en/1.9.0/

app.config['CORS_HEADERS'] = 'Content-Type'

答案 2 :(得分:1)

就我而言,由于内部错误引发了 CORS 错误。与 CORS 完全无关的错误(应该返回 500)导致了这种情况。

相关问题