【发布时间】:2020-06-18 01:26:37
【问题描述】:
我正在从 React 调用 Flask API(都在 localhost 上运行)并且遇到了 CORS 问题。 发出请求时,浏览器(Chrome)给出以下错误
Access to XMLHttpRequest at 'http://localhost:5000/sas' from origin 'http://localhost:3000' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: Redirect is not allowed for a preflight request.
设置
Flask 设置如下
from flask_cors import CORS
from flask import Flask, request, Response
from flask_restful import Api, Resource
import json
class SAS(Resource):
def get(self):
content = request.json
js = json.dumps(
{
"Response": "Some response"
}
)
resp = Response(js, status=200, mimetype='application/json')
return resp
app = Flask(__name__)
cors = CORS(app)
api = Api(app)
api.add_resource(SAS, '/sas/')
React中使用axios的调用如下
buttonPressed = async event => {
event.preventDefault();
const response = await axios.get(`http://localhost:5000/sas`, {
data: {
user: "user",
file_name: "user",
directory_name: "user"
}
});
};
注意:从 Postman 运行请求可以正常工作并显示标头 Access-Control-Allow-Origin = *
知道如何解决这个问题吗?
另外,如果我将 React 前端和 API 作为 dockerized 应用程序运行,我应该不会再看到这个问题了,对吗?在这种情况下,我也会考虑在开发过程中绕过问题
【问题讨论】:
-
感谢@Pitto 指出这一点。我之前遇到过该页面,但不幸的是它无助于解决问题
标签: python reactjs flask cors axios