症状
我用nextj配置了front page,并配置为与外部 www.example.com .前面没有代理服务器或其他服务。
在我的nextjs中,我发送了两个请求,但如果类型是preflight,它在200状态下正常工作。其他请求返回cors错误。
当我检查服务器地址的正常响应头时,它是请求URL,如下所示。
access-control-allow-headers: Content-Type
access-control-allow-methods: GET, POST, PUT, DELETE, OPTIONS
access-control-allow-origin: *
试过了
考虑到在服务器端一切都是允许的,我在互联网上搜索并在我的nextjs中尝试了以下设置。
server.js
const corsRewrites = async() => {
return [
{
source: '/:path*',
destination: 'https://example.com/:path*',
},
];
};
next.config.js
async headers() {
return [
{
source: "/(.*)",
headers: [
{ key: "Access-Control-Allow-Credentials", value: "false" },
{ key: "Access-Control-Allow-Origin", value: "*" },
{ key: "Access-Control-Allow-Methods", value: "GET,OPTIONS,PATCH,DELETE,POST,PUT" },
{ key: "Access-Control-Allow-Headers", value: "X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X- Api-Version" }
]
}
]
},
我做了上面的,成功地构建并运行了它,但它仍然返回cors错误。在localhost上出现相同的症状。
在当前情况下,无法更改提供服务的服务器的设置。
我在preflight中给予了一个正常的响应,而在其他请求中生成了一个cors错误,我不知道如何在客户端解决这个问题。提供该服务的服务器与其他服务器正常通信,并且“access-control-allow-origin:* ”设置,但我不明白为什么会出现cors错误。任何关于如何解决这个问题的帮助将不胜感激。
1条答案
按热度按时间1cosmwyk1#
我解决了问题。
发出请求的服务器必须发出具有特定id值的请求。否则,由于访问源地址没有正确地移交,将发生cors错误。
如果服务器中Access-Control-Allow-Origin的值为'*',则必须检查身份验证方法或代码值。cors错误很可能不是服务器端的问题。