Nodejs中同一个域名下 post 为啥还给提示跨域而提交失败?
Nodejs中同一个域名下 post 为啥还给提示跨域而提交失败?
背景: NODE 做的后台 环境:在非 Chrome 下都能正常运行提交数据,只有 chrome 不行 警告语句: XMLHttpRequest cannot load http://XXX.com/login. No ‘Access-Control-Allow-Origin’ header is present on the requested resource. Origin ‘http://www.XXX.com’ is therefore not allowed access.
请教一下这是怎么回事?
为什么说 xxx.com 和 www.xxx.com 是同域名?
XXX.com 和 www.XXX.com 是不同的域
你 csp 限制了某些域名
soga~看漏眼了
但是为啥就只有 chrome 不行?其他浏览器都可以
找到原因了~感谢两位提醒
可以把原因 po 出来吗?
在Node.js中,如果遇到在同一个域名下的POST请求还提示跨域(CORS,Cross-Origin Resource Sharing)问题,通常可能是由以下几个原因导致的:
-
端口不同:即使域名相同,如果请求和响应的端口不同,也会被视为跨域请求。
-
CORS中间件配置不正确:如果你使用了Express等框架,需要正确配置CORS中间件。
-
请求头设置问题:检查请求头中的
Origin
、Referer
等字段是否设置正确。
以下是一个使用Express框架和cors中间件正确配置CORS的示例:
const express = require('express');
const cors = require('cors');
const app = express();
// 允许所有来源的跨域请求(生产环境中应限制来源)
app.use(cors({
origin: '*',
methods: 'GET,HEAD,PUT,PATCH,POST,DELETE',
credentials: true,
}));
app.post('/your-endpoint', (req, res) => {
res.json({ message: 'POST request received!' });
});
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
在上述代码中,cors
中间件被配置为允许所有来源(origin: '*'
)的GET、POST等请求,并且允许携带凭证(credentials: true
)。如果问题依然存在,请检查:
- 浏览器控制台中的具体错误信息。
- 确认请求的URL和端口是否与服务器监听的一致。
- 检查是否有其他中间件(如安全、代理等)干扰了CORS的设置。