我目前正在使用MERN堆栈构建应用程序,但在访问REST api时遇到问题。它可以使用get请求获取数据,但是写入数据似乎失败。
在声明路线之前,我有以下代码块:
x, y = 0, 0
x2, y2 = 1, 1
lst = [(x, y), (x2, y2)]
lst[0] = (lst[0][0], lst[0][1] + 32)
>> [(0, 32), (1, 1)]
我在前端使用axios进行那些api调用,并将withCredentials属性设置为true
我正在使用cookie会话(在CORS之前声明配置(代码上方)声明)在我的域和子域中共享我的cookie
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', 'https://staging.domain.io');
res.header('Access-Control-Allow-Methods', 'GET, OPTIONS, PUT, POST, DELETE');
res.header('Access-Control-Allow-Headers', 'Origin, X-Requested-With, X-HTTP-Method-Override, Content-Type, Accept');
res.header('Access-Control-Allow-Credentials', true);
next();
});
这仅在我部署到GCP时失败,它在localhost上运行良好。
使用express cors中间件软件包并对其进行如下配置:
app.use(
session({
maxAge: 24 * 60 * 60 * 1000,
keys: [process.env.SESSION_ENCRYPTION],
domain: 'domain.io',
signed: true,
httpOnly: false,
secure: false
}));
看起来像这样的代码根本没有改变行为,因为无论放置该代码没有什么不同。但是,如果我保留该代码并在最顶部删除该代码,则整个api都会失败(甚至是GET请求)。
所以现在我对如何解决这个问题有些困惑。有什么建议吗?
谢谢!
答案 0 :(得分:0)
几天后,头部被大量划伤,我找出了哪里出了问题。对于cors封装方法,origin属性不等于请求的标头origin
请求标头:
并且cors的origin属性是
我要做的就是从cors的原点中删除斜线,哈哈。
第一种方法(不使用cors)仍然存在。