javascript - CORS 标头问题表达 Angular
问题描述
在开发中这工作正常,我最近更新了我的 vps 中的代码,我在控制台中收到错误:从源 'https:// 访问 'https://www.example.con/api/register' 处的 XMLHttpRequest example.com' 已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。我尝试过:
app.use((req, res, next) => {
res.header('Access-Control-Allow-Origin', '*');
res.header('Access-Control-Allow-Headers', 'Authorization, X-API-KEY, Origin, X-Requested-With, Content-Type, Accept, Access-Control-Allow-Request-Method');
res.header('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, DELETE');
res.header('Allow', 'GET, POST, OPTIONS, PUT, DELETE');
next();
});
noAuthHeader = { headers: new HttpHeaders({ 'NoAuth': 'True' }) };
postUser(user: User){
return this.http.post(this.url + '/register', user, this.noAuthHeader);
}
register: (req, res, next) => {
let user = new User();
user.email = req.body.email;
user.password = req.body.password;
user.domain = req.body.domain;
user.save((err, doc) => {
if (!err)
res.send(doc);
else {
if (err.code == 11000) {
if(err.keyValue.hasOwnProperty('domain')){
res.status(422).send(['Name repeated']);
}
if(err.keyValue.hasOwnProperty('email')){
res.status(422).send(['Email repeated']);
}
} else {
return next(err);
}
}
});
},
我在代码中所做的修改是 register() api 中的验证。我正在使用 mongo DB 并检查错误代码 11000 以获取 DB(电子邮件和域字段)中重复的唯一模型数据。当我尝试注册重复的电子邮件或域时,控制台会引发 CORS 错误。
已编辑:我在控制台中收到此错误:
/home/myapp_full/myapp_v0.2/node_modules/mongoose/lib/helpers/promiseOrCallback.js:19 抛出错误;^ TypeError:无法读取未定义的属性“hasOwnProperty”。
解决方案
我认为你不需要 CORS,除非你真的打算拥有两个独立的网站:www.example.com
和example.com
.
相反,如果您的服务器设置为接受来自两者的请求并且不重定向,我建议您尽可能在代码中处理重定向,以便您选择一个规范的 URL: Eitherexample.com
或www.example.com
. 除此之外,只要两台服务器上都存在脚本,只需加载不带 URL 的脚本(aka "/register"
, not this.url + "/register"
)
推荐阅读
- node.js - 函数错误在离子角度中使用自然nodejs库
- python - 我需要 MNIST 打印大量数字
- reactjs - 用 connect() 反应 Redux 表单?
- javascript - 反应
- intellij-idea - 在 Tomcat 服务器中看不到应用程序服务器
- powerbi - Power BI 的 Mapbox 视觉对象 - 不支持视觉对象并将被弃用
- c++ - return 语句中的嵌套函数调用会导致 stack-use-after-scope 错误吗?
- weka - 使用嵌入的 WEKA 分类
- c# - 如果条件不满足,则“短路”YARP RequestTransform 并返回自定义响应
- django - 在 Django 应用程序中使用 IP 地址查看计数器