Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS HTTPOnly cookie未使用fetch函数发送_Javascript_Node.js_Http_Cookies - Fatal编程技术网

Javascript NodeJS HTTPOnly cookie未使用fetch函数发送

Javascript NodeJS HTTPOnly cookie未使用fetch函数发送,javascript,node.js,http,cookies,Javascript,Node.js,Http,Cookies,我在expressJS服务器和VueJS字体端之间的cookie身份验证方面遇到问题 通过站点登录时,我在set Cookie标头中成功获取了HTTPOnly Cookie: 我也看到了,我觉得一切都很好,我不是饼干专家,所以这可能不正确 问题是,当我在另一个端点上请求用户设置时,cookie不会发送到服务器。在服务器端处理此请求时,req.cookie对象为空 这是我的获取代码: const loginOptions = { method: 'POST', mode: 'cors',

我在expressJS服务器和VueJS字体端之间的cookie身份验证方面遇到问题

通过站点登录时,我在set Cookie标头中成功获取了HTTPOnly Cookie:

我也看到了,我觉得一切都很好,我不是饼干专家,所以这可能不正确

问题是,当我在另一个端点上请求用户设置时,cookie不会发送到服务器。在服务器端处理此请求时,
req.cookie
对象为空

这是我的获取代码:

const loginOptions = {
  method: 'POST',
  mode: 'cors',
  cache: 'no-cache',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    email: email,
    password: password,
  }),
  credentials: 'same-origin',
};

const settingsOptions = {
  method: 'GET',
  mode: 'cors',
  cache: 'no-cache',
  headers: {
    'Content-Type': 'application/json',
  },
  credentials: 'same-origin',
};

const loginResponse = await fetch(baseUrl + '/login', loginOptions);
const userSettings = await fetch(baseUrl + '/settings', settingsOptions);
我尝试使用
凭据:“include”
,但没有成功

在express服务器上,我使用的cors如下所示:

app.use(cors({
    origin: '*',
    credentials: true,
}));
在第二个请求中,
403
状态是在请求没有附加cookie时由服务器设置的

我已尝试将cookie的域设置为
localhost
127.0.0.1
,如另一个线程中建议的那样

解决了的
我在某个地方读到,在创建cookie时,应该向cookie添加特定的域值。如果我只是删除了那个设置,我猜它会自动设置,然后它就工作了!因此,我猜测我将域值设置为错误的值,用于我尝试执行的操作

您的响应具有
访问控制允许来源:http://localhost:8080
这意味着您正在提出跨原产地请求

你说:


…这会告诉客户端代码只包含同源请求的凭据。

我在某个地方读到Chrome对Cookie和localhost env不友好,可能就是这样

此外,几天前我在cookies、express和vueJS方面遇到了一些问题


也许它可以帮助您:

我在某个地方读到,您应该在创建cookie时向cookie添加特定的域值。如果我只是删除了那个设置,我猜它会自动设置,然后它就工作了!因此,我的猜测是,我将域值设置为错误的值,用于我尝试执行的操作

基本URL的值与加载调用
fetch()
的页面的URL之间的关系是什么?如果cookie被设置为
localhost:3000
,那么浏览器只会将它们发送到
localhost:3000
,而不会发送到任何其他端口。我认为您已经检查了开发工具中的第二个请求,查看cookie是否在请求头Roh中发送,并尝试firefox,为了排除其中一个答案中指出的chrome功能BaseURL的值为
localhost:3000
,我正在从
localhost:8080
发送请求。这就是问题所在吗?关于Chrome功能,我也尝试过firefox,在那里也是一样的unfortunately@JaromandaX我认为这不会将cookie发送到不同的方法/主机/端口组合。@JaromandaX如果您查看OP中链接的标题,该页面看起来像是从
localhost:3000
加载的,而不是
localhost:8080
credentials: 'same-origin',