node搭建服务,hosts指向了域名,跨域cookie取不到

发布于 2022-09-11 19:58:18 字数 1399 浏览 10 评论 0

问题描述

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

飘然心甜 2022-09-18 19:58:18

因为你的来源仍然是 localhost 而不是 http://dev.page.com:8082
另外,跨域取cookie是可以实现的,比如建立一个代理,负责中转cookie

紅太極 2022-09-18 19:58:18

跨域cookie本来就是取不到,有什么问题么,安全机制就是这么规定的.
可以用反向代理,让两个服务运行在同一个域下

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文