我使用falcon_cors在python中创建restful服务。如果UI从不同的域发送http请求,浏览器将首先发送选项请求。但在浏览器上,我得到了以下错误:
XMLHttpRequest无法加载http://localhost:8000/user/。对飞行前请求的响应不会通过访问控制检查:响应中的“访问控制-允许-凭据”标题的值必须是'true‘,当请求的凭据模式是'include’时,这个值必须是‘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
])
我在创建allow_all_methods=True
时指定了falcon_cors
,但仍然会出现相同的错误。我还应该更新些什么呢?
发布于 2017-07-11 12:22:47
问题中的错误消息所指出的问题与OPTIONS
请求无关。
相反,问题似乎是服务器发送了一个带有空值的Access-Control-Allow-Credentials
响应头。要解决这个问题,需要将服务器配置为发送Access-Control-Allow-Credentials: true
。也就是说,头值必须是"true
“。
如果服务器没有使用Access-Control-Allow-Credentials: true
进行响应,那么浏览器将阻止您的前端代码访问响应--因为您的前端JavaScript代码在它发送给服务器的请求中包含了凭据,在这种情况下,CORS协议要求服务器使用Access-Control-Allow-Credentials: true
进行响应。
https://stackoverflow.com/questions/45033278
复制相似问题