Express JS cors 中间件无法在浏览器上存储 cookie

Posted

技术标签:

【中文标题】Express JS cors 中间件无法在浏览器上存储 cookie【英文标题】:Express JS cors middleware unable to store cookies on browser 【发布时间】:2021-09-10 21:36:54 【问题描述】:

我希望 react 应用程序能够将 cookie 存储在浏览器的 cookie 存储中。

我需要在 axios 的标头中发送 withCredentials: true 。

axios.defaults.withCredentials = true
export const login = (email, password) => 
  return axios(
    method: "POST",
    url: "https://api.*****.**/login",
    data: 
      email: email,
      password: password,
    ,
  );
;

在后端我使用 ExpressJS cors 中间件

const cors = require("cors");
const corsOptions = 
    credentials: true,
;
app.use(cors(corsOptions));

在使用 axios 从 react 发出登录请求时,我收到错误:

Access to XMLHttpRequest at 'https://api.*****.**/login' from origin 'http://localhost:3000' has been blocked by CORS policy: 
Request header field content-type is not allowed by Access-Control-Allow-Headers in preflight response.

【问题讨论】:

您是否尝试在服务器端添加源?这是文档reference。 @LuisPauloPinto origin 它默认为“*” 是的,但是尝试设置明确的origin: 'http://localhost:3000' 看看你是否继续得到它。这是一个开始。 @LuisPauloPinto 在来到 *** 询问之前已经尝试过了 【参考方案1】:

来自res.cookie('name', 'tobi', domain: '.example.com', path: '/admin', secure: true ) 删除选项中的域

【讨论】:

以上是关于Express JS cors 中间件无法在浏览器上存储 cookie的主要内容,如果未能解决你的问题,请参考以下文章

Node.js---使用Express写接口

node跨域cors模块,nodejs+express跨域

使用 cors、express 和 google api 的 Node.js 服务器应用程序在 Azure 部署后无法正常工作

无法解决对 Express API 的 AJAX 调用的 CORS 错误

Express 中间件未设置 CORS 标头

CORS 中间件在 nodeJS 中不起作用