node搭建服务,hosts指向了域名,跨域cookie取不到
问题描述
node启动了两个服务,一个用来提供接口,一个用来存放前端页面,用了hosts指向了两个域名,配置了header的相关配置后,取到的不是前端页面(浏览器)的cookie,取到的是接口(服务端)的cookie。
问题出现的环境背景及自己尝试过哪些方法
不用hosts指向,直接用ip访问的就可以取到浏览器的cookie
相关代码
// 服务端代码
const express = require('express');
const app = express();
app.get('/user', function (req, res) {
res.header("Access-Control-Allow-Origin", 'http://dev.page.com:8082'); //需要显示设置来源,不能使用‘*’
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("Access-Control-Allow-Credentials",true);
res.json({
method: 'GET - user',
cookies: req.headers.cookie || '',
params: req.params,
path: req.path,
query: req.query,
route: req.route
})
})
var server = app.listen(8081, function () {})
// 接口请求
$.ajax({
url: 'http://dev.interface.com:8081/user',
method: 'GET',
xhrFields: {
withCredentials: true
},
crossDomain: true,
success: function(res){
console.log(res);
},
fail: function(err){
console.log(err);
}
})
// 配置hosts
127.0.0.1 dev.page.com
127.0.0.1 dev.interface.com
你期待的结果是什么?实际看到的错误信息又是什么?
希望能在request header中自动带上浏览器cookie。
下图是实际的接口请求的结果截图
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
因为你的来源仍然是 localhost 而不是 http://dev.page.com:8082
另外,跨域取cookie是可以实现的,比如建立一个代理,负责中转cookie
跨域cookie本来就是取不到,有什么问题么,安全机制就是这么规定的.
可以用反向代理,让两个服务运行在同一个域下