我试图从我的前端(ReactJS项目)拉取请求到我的flask API端点。但每当我尝试这样做时,这个奇怪的错误就会出现
Access to fetch at 'https://2483-103-79-250-41.ngrok-free.app/check' (redirected from 'http://2483-103-79-250-41.ngrok-free.app/check') from origin 'http://localhost:3000' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
我也在API中指定了我的源(当前源-〉http://localhost:3000)下面是我的flask api代码
from flask import Flask, request
import utils
from flask_cors import CORS
app = Flask(__name__)
CORS(app, origins="http://localhost:3000")
@app.route("/create_user", methods=["POST"])
def sign_up():
body = request.get_json()
res = utils.sign_up_user(
user_name=body['user_name'],
user_password= body['user_password'],
user_email= body['user_email']
)
return res
@app.route("/login_user", methods=["POST"])
def log_in():
body = request.get_json()
res = utils.log_in_user(
user_name=body['user_name'],
user_password=body['user_password'],
user_email=body['user_email']
)
return res
@app.route("/check", methods=["GET"])
def check():
return {
"status":"ok"
}
if __name__=="__main__":
app.run(debug=True)
下面是我尝试执行fetch请求的函数
const checkApi = async (fetchUri) => {
try {
let uri = `${fetchUri}/check`
const rawRes = await fetch(uri)
const res = await rawRes.json()
if (res.status == "ok") {
localStorage.setItem("@uri", String(fetchUri))
setUri(fetchUri)
if(user.exists){
navigate("/app")
}else{
navigate("/login")
}
return
}
clearBadUri()
} catch (error) {
clearBadUri()
}
}
我尝试使用函数来执行一个fetch请求,以检查API是否正常工作。但是无论我做什么类型的请求,它都会给我CORS错误,我甚至将CORS源设置为我当前的react源。我想知道如何避免这种错误以及它意味着什么。
3条答案
按热度按时间gopyfrb31#
要解决此错误,您需要在服务器上允许跨域请求。在你的Flask代码中,你已经在使用Flask-CORS扩展来允许来自“http://localhost:3000”的请求。但是,您可能需要指定CORS请求所允许的HTTP方法。修改
supports_credentials=True参数用于允许跨域请求发送cookie。
7rtdyuoh2#
浏览器中的URL是什么?如果是
https://2483-103-79-250-41.ngrok-free.app
:而不是
CORS(app, origins="http://localhost:3000")
你必须把1wnzp6jl3#
我的设置-〉我有一个react js项目作为我的前端托管在我的电脑上。然后我有一个flask服务器在我的电脑上运行,但是使用ngrok进行端口转发,我试图使用ngrok在react js项目中给我的uri来访问我的flask服务器。
我的问题-〉发生了一个名为“CORS不允许请求”的错误,这是因为服务器没有正确配置允许CORS,我想?我不是这方面的Maven,但在经过了很多令人头痛的聊天之后,GPT给了我一个对我有效的答案。
这对我很有效,希望对其他人也有帮助。