node.js - ExpressJS 不同的域名 - CORS
问题描述
我有一个挑战,目前正在为我发送的 cookie 设置域,该 cookie 带有我的 expressjs 实现的响应,但目前它只设置我的 expressjs 服务器所在的 IP 地址(端点)。
这是我最初的 CORS 配置;
router.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "http://localhost:3000");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With,
Content-Type, Accept, pwd, email");
next();
});
这是我的身份验证部分中的 res.cookie 行;
res.cookie('token', token, {domain: "localhost", expires: new
Date(Date.now() + 600000*100000), httpOnly: true});
当我使用 chrome 登录时,很奇怪的是,我得到了 cookie,但是在我的 expressjs 端点的 IP 地址下,可以说“ http://88.13.91.0 ”,所以当我刷新时我会丢失它。我也没有在 expressjs api 的响应中看到响应中的“set-cookie”标头,但我确实得到了 cookie。我已经清除了 cookie 以确保它在尝试登录后会出现,所以我知道它不会过时。我还在我的 fetch 调用中将“凭据”设置为“包含”,但没有运气。
我的问题是,如果域与端点不同,我是否无法设置域?我的想法是,这可能是一个安全问题,因此被阻止,因为没有人应该能够为不存在的域设置 cookie,或者我错了。
解决方案
像这样尝试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());
推荐阅读
- java - 如何在 firestore android 中使用其他集合详细信息进行分页
- php - 用户“...”没有用户提供者。您的用户提供程序的“supportsClass()”方法不应该为这个类名返回 true 吗?
- python-3.x - 如何计算 s3 存储桶中文件的 md5
- github - 根据拉取请求类型触发不同的作业
- python - 在 python pandas 中应用渐变背景颜色不起作用
- vue.js - 如何使图片在这个中心?(Vuetify)
- jquery - 我在我的 wordpress 我的列表主题中遇到了一个问题,它给出了数据表 ajax 加载错误
- python - 使用装饰器时如何使用烧瓶应用程序上下文
- ios - 从版本 0.59.10 升级到 0.60.0 后,React Native IOS 错误,“显示最近的消息未定义符号:_OBJC_CLASS_$_RCCManager”
- java - Micronaut 中的读取超时异常