【发布时间】:2020-12-30 12:49:03
【问题描述】:
我收到以下错误
Access to fetch at 'https://mywebsite.com/private-post.html'
(redirected from 'https://api.mywebsite.com/login')
from origin 'https://mywebsite.com' 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.
我已将以下 cors 预检设置为 https://api.mywebsite.com。 https://mywebsite.com 是静态网站。我不确定它是否有cors。
Access-Control-Allow-Origin: ['https://mywebsite.com', 'https://api.mywebsite.com']
Access-Control-Allow-Headers: [*]
Access-Control-Allow-Methods: [DELETE, GET, OPTION, PUT, HEAD, PATCH, POST]
Access-Control-Allow-Credentials: true
首先我从https://mywebsite.com/login.html 向https://api.mywebsite.com/login 端点发出发布请求。成功登录后,我正在使用 lambda 进行重定向。虽然有以上的cors。由于上述错误,我无法重定向到任何页面。
const response = {
statusCode: 303,
headers: {
'Location': 'https://mywebsite.com/private-post.html'
}
}
return response
编辑
我尝试设置Access-Control-Allow-Origin: [*],但无法设置Access-Control-Allow-Credentials: true。
为了解决这个问题,我现在设置了Access-Control-Allow-Origin: ['https://*'],我可以允许凭据,但是在重定向时,cors 错误仍然保持不变。
【问题讨论】:
-
你试过在标题中设置
mode: no-cors吗? -
在发回响应时尝试将
Access-Control-Allow-Headers:*设置为响应对象中的标头。 -
如果我设置
Access-Control-Allow-Headers:*,则不支持Access-Control-Allow-Credentials: true。没有那个我无法登录。我确实设置了mode: no-cors仍然 lambda 自动将access-control-allow-origin: https://mywebsite.com和mode:no-cors添加到标题中。