为什么nextjs中有同样的请求,但是preflight是200,post请求是cors错误?

ndasle7k  于 2023-04-30  发布在  其他
关注(0)|答案(1)|浏览(216)

症状

我用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错误。任何关于如何解决这个问题的帮助将不胜感激。

1cosmwyk

1cosmwyk1#

我解决了问题。
发出请求的服务器必须发出具有特定id值的请求。否则,由于访问源地址没有正确地移交,将发生cors错误。
如果服务器中Access-Control-Allow-Origin的值为'*',则必须检查身份验证方法或代码值。cors错误很可能不是服务器端的问题。

相关问题