如何通过falcon_cors启用"选项"请求?



我正在使用falcon_cors在python中创建restful服务。如果 UI 从其他域发送 http 请求,浏览器将首先发送 OPTIONS 请求。但是我在浏览器上得到以下错误:

XMLHttpRequest 无法加载 http://localhost:8000/user/。对 预检请求未通过访问控制检查:的值 响应中的"访问控制允许凭据"标头为",其中 当请求的凭据模式为"包含"时,必须为"true"。 因此,不允许访问源"http://localhost:4200"。这 由 XMLHttpRequest 发起的请求的凭据模式为 由 withCredentials 属性控制。

我已经搜索了我需要允许来自后端的选项才能处理此请求。所以我写我的代码如下:

f_cors = falcon_cors.CORS(allow_origins_list=[
'http://localhost:4200',
'http://127.0.0.1:4200',
],
allow_all_headers=True, allow_all_methods=True)
app_pre_beaker = falcon.API(middleware=[
f_cors.middleware
])

我已经指定了有关创建falcon_corsallow_all_methods=True但仍然收到相同的错误。我还应该为此更新什么?

问题中的错误消息指示的问题与OPTIONS请求无关。

相反,问题似乎是服务器发送了一个具有空值的Access-Control-Allow-Credentials响应标头。要解决此问题,您需要将服务器配置为发送Access-Control-Allow-Credentials: true。也就是说,标头值必须是"true"。

如果服务器没有Access-Control-Allow-Credentials: true响应,那么您的浏览器会阻止您的前端代码访问响应 - 因为您的前端JavaScript代码在发送到服务器的请求中包含凭据,在这种情况下,CORS协议要求服务器使用Access-Control-Allow-Credentials: true响应。

最新更新