我总是对 CORS 感到非常痛苦,这就是我的情况。
我正在从我的前端发送 get 请求:
const axiosInstance = Axios.create({
baseURL: process.env['NEXT_PUBLIC_API_URL'],
withCredentials: true,
});
const { data } = await axiosInstance.get<string>(ApiRoutes.NONCE);
在我的后端 CORS 是这样配置的:
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
请求处理程序如下:
session_id = generate_session_id()
COOKIES[session_id] = {
'nonce': generate_nonce()
}
response.set_cookie(
key=COOKIE_SESSION_ID_KEY,
value=session_id,
samesite='none',
secure=True)
return COOKIES[session_id]['nonce']
问题是当我第一次获取 /nonce 时,当未设置 Cookie 时,我收到 CORS 错误 但是当我第二次得到它时,一切正常,因为 Cookie 已经设置好了。 为什么在未设置 cookie 时出现 CORS 错误以及如何解决此问题?
我通过将
allow_origins
从 *
更改为我的域来修复此问题。 Chrome 这边好像被屏蔽了
我在这里找到了解决方案:如何调试 CORS 错误
当请求的凭证模式为“include”时,响应中“Access-Control-Allow-Origin”标头的值不能是通配符“*”