【发布时间】:2017-12-17 07:35:32
【问题描述】:
我有dotnet core web api 应用程序在尝试通过 IP 地址从另一台计算机或同一主机发送请求时返回以下错误:
XMLHttpRequest 无法加载 http://10.50.1.46:2280/api/login/。回复 预检请求未通过访问控制检查:否 请求中存在“Access-Control-Allow-Origin”标头 资源。因此不允许使用原点“http://10.50.1.46:8080” 使用权。响应的 HTTP 状态代码为 400。
客户端应用是 vue.js 应用。这是登录方法 sn-p 失败:
login: function(e) {
e.preventDefault();
this.connectionError = false;
this.loginError = false;
var headers = { 'Content-Type': 'application/json' };
var loginUrl = 'http://10.50.1.46:2280/api/login/';
var data = {Login: this.user.login, Password: this.user.password};
console.log('Sending login request for user : ' + this.user.login);
this.$http.post(loginUrl, data, {headers: headers})
.then(response => {
// get body data
var data = response.body.data;
setCredentials(this.user.login, data.accessToken, data.refreshToken);
this.$router.push('/home');
}, response => {
console.log(response);
if(response.status == 0) {
this.connectionError = true;
} else {
this.loginError = true;
}
});
}
这是我的Startup.cs 文件。这里是请求和响应headers info
知道怎么解决吗?
【问题讨论】:
-
所以问题的核心是您的服务器显然没有正确响应 CORS 预检请求,因此出现错误消息。您可以通过删除“Content-Type”标头来消除对预检请求的需求,或者教您的服务器如何处理 CORS 预检,我不知道该怎么做:-(。