gpt4 book ai didi

javascript - 无法使用 Node js 设置 cookie

转载 作者:太空宇宙 更新时间:2023-11-04 02:14:53 25 4
gpt4 key购买 nike

我是 Node js 新手;我试图了解如何使用 Node.js 获取和设置 cookie。我正在使用 Visual Studio,并且正在使用自动创建的嵌入式 IIS Express。我的 server.js 上有服务器代码:

var express = require('express');
var cookieParser = require('cookie-parser')

var app = express();
app.use(cookieParser())

app.use(function (req, res, next) {
res.setHeader('Access-Control-Allow-Origin', 'http://localhost:61342');
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
res.setHeader('Access-Control-Allow-Headers', 'X-Requested-With,content-type');
res.setHeader('Access-Control-Allow-Credentials', true);
next();
});

app.get('/setCookie/:param', function (req, res) {
res.cookie('testCookie', req.params.param);
console.log('cookie created!');
res.send();
});

var server = app.listen(8001, 'localhost', function () {
var host = server.address().address
var port = server.address().port
console.log("Server listening at http://%s:%s", host, port)
});

这是客户端代码:

function server() { 
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "http://localhost:8001/setCookie/cookie1", true);
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
alert("ok");
}
}
xmlhttp.send();
}

当我单击按钮时,我会调用此函数(仅用于测试)。我注意到如果我输入 localhost:8001/getCookie/cookie1它正确设置了 cookie(我可以在浏览器控制台上看到它,输入 document.cookie),但是如果我在 localhost:61342/上运行我的项目,然后单击调用函数 server() 的按钮,我会得到以下响应:

Request URL:http://localhost:8001/setCookie/cookie1
Request Method:GET
Status Code:200 OK
Remote Address:127.0.0.1:8001

Access-Control-Allow-Credentials:true
Access-Control-Allow-Headers:X-Requested-With,content-type
Access-Control-Allow-Methods:GET, POST, OPTIONS, PUT, PATCH, DELETE
Access-Control-Allow-Origin:http://localhost:61342
Connection:keep-alive
Set-Cookie:testCookie=cookie1; Path=/

但是当我在浏览器控制台输入 document.cookie 时,我没有看到任何内容。我知道如何解决这个问题吗?感谢您的耐心等待

最佳答案

这里有两个单独的问题。

第一:

document.cookie 将显示属于文档来源的cookie。跨源 Ajax 请求将为它们发出请求的源发送并存储 cookie。由于这是不同的来源,因此它们不会显示在 document.cookie 中。要检查它们,您需要向它们所属的源发出请求,并在“网络”选项卡中检查它。

第二:

跨域请求默认不支持cookie。你必须set withCredentials首先为true

关于javascript - 无法使用 Node js 设置 cookie,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36202110/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com