无法使用Node js设置cookie
Unable to set cookie with Node js
我是Node.js的新手;我正在努力了解如何使用Node获取和设置cookie。我使用的是Visual Studio,使用的是自动创建的嵌入式IIS学习版。我的服务器.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。您必须先将withCredentials
设置为true
。
相关文章:
- Bookshelf.js设置的属性不在数据库中
- 通过js设置页面历史记录和页面内容
- Highcharts.js设置用于更改列颜色的阈值
- D3.js:设置贝塞尔曲线的动画
- 节点.js设置套接字 ID
- 使用 node.js 设置 Microsoft Access 数据库连接
- HTML + JS:设置文本区域内容样式的最佳方式
- 使用angular-moment.js设置日期格式
- JS:设置src更改的动画持续时间
- 如何使用node.js和express.js设置SSL
- Foundation 6.2 Slider使用js设置值
- 是否可以在CSS中为JS设置数据,以了解某些媒体查询正在应用
- 无法使用Node js设置cookie
- 当源代码由js设置时加载检查图像
- Three.js设置对象不透明度/透明度
- 通过 JS 设置为在浏览器关闭时过期的 Cookie 未过期
- 如何为 angular js 设置动态网址
- 三.js设置旋转矩阵超过90度时的奇怪行为
- 节点.js设置超时与回调
- D3.js设置突出显示的表格的样式