ExpressJS不同域名-CORS

时间:2019-01-07 01:38:00

标签: node.js api express header cors

我遇到了一个挑战,目前正在设置我要通过我的expressjs实现的响应发送的cookie的域,但是目前它仅设置我的expressjs服务器所在的IP地址(端点)。

这是我最初的CORS配置;

 res.cookie('token', token, {domain: "localhost", expires: new 
 Date(Date.now() + 600000*100000), httpOnly: true});

这是我的身份验证部分中的res.cookie行;

css

当我使用chrome登录时,很奇怪,我得到了cookie,但是在我的expressjs端点的IP地址下,说“ http://88.13.91.0”,所以刷新时会丢失它。我也没有在expressjs api的响应中看到响应中的“ set-cookie”标头,但是我确实得到了cookie。我已经清除了cookie,以确保尝试登录后它就会出现,因此我知道它不是陈旧的。我在提取调用中还将“凭证”设置为“包含”,但没有运气。

我的问题是,如果域与端点不同,我是否无法设置域?我的想法是,这可能是一个安全问题,因此被阻止,因为没有人应该能够为不存在的域设置cookie,或者我错了。

1 个答案:

答案 0 :(得分:0)

尝试像这样的CORS和

import * as cors from "cors"; 

//或

const cors = require ('cors');
    app.get("/", function (req, res) {
      res.setHeader("Content-Type", "application/x-www-form-urlencoded");
      res.setHeader("Access-Control-Allow-Origin", "*");
      res.setHeader(
        "Access-Control-Allow-Headers",
        "Origin, X-Requested-With, Content-Type, Accept"
      );

      res.setHeader("Access-Control-Allow-Credentials", true);

将此添加到所有中间件之上

app.use(cors());