Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.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 无法使用节点js设置cookie_Javascript_Node.js_Cookies - Fatal编程技术网

Javascript 无法使用节点js设置cookie

Javascript 无法使用节点js设置cookie,javascript,node.js,cookies,Javascript,Node.js,Cookies,我不熟悉NodeJS;我想了解如何使用Node获取和设置cookie。 我使用的是Visual Studio,我使用的是自动创建的嵌入式IIS Express。 my server.js上有服务器代码: var express = require('express'); var cookieParser = require('cookie-parser') var app = express(); app.use(cookieParser()) app.use(function (req,

我不熟悉NodeJS;我想了解如何使用Node获取和设置cookie。 我使用的是Visual Studio,我使用的是自动创建的嵌入式IIS Express。 my 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。您必须先执行
true