React+Express部署后遇CORS预检请求重定向不允许问题求助
更新: 感谢Sean的建议,我已解决该问题。
查看响应头,通过Location头了解请求要将客户端重定向到何处,这可能会提示你栈中的哪部分出了问题。
问题原因是请求要将客户端重定向到带www的链接(https://www.example.com/api),而Axios请求链接中缺少www,我通过添加www解决了问题。
我正被一个问题困扰许久,希望能得到帮助。我用React和NodeJS Express开发了Web应用,前后端部署到Render.com后,购买了域名并做了如下DNS配置:
- 客户端:https://example.com/
- 服务端:https://api.example.com/
客户端发起登录请求(及其他请求)时出现以下错误:
从源地址
https://www.example.com向https://api.example.com/admins/login发起XMLHttpRequest请求时被CORS策略阻止:预检请求的响应未通过访问控制检查:预检请求不允许重定向。
在Safari中看到的提示是:
预检请求响应失败,状态码:307
需要说明的是,这个请求在Postman里能正常执行。另外我还在Render上配置了重写规则,把example.com/api/*的请求重写到api.example.com/*,但设置后错误依然存在。
以下是我一开始的NodeJS CORS配置:
关于源链接,我知道有些用户的问题出在链接末尾有没有斜杠,我试了各种写法,但都没用。
const cors = require("cors"); const corsOptions ={ origin: "https://example.com/", credentials:true, //access-control-allow-credentials:true optionSuccessStatus:200, }; app.use(cors(corsOptions));
之后我搜了很多资料,尝试了下面的CORS配置,还是解决不了问题:
const cors = require("cors"); app.use(cors()); //也尝试过搭配之前代码段里的corsOptions app.options('*', cors());
最后我还试了Stack Overflow上一个回答里的自定义中间件,但同样没效果。
内容的提问来源于stack exchange,提问作者groove_of_course

