【发布时间】:2018-09-10 13:39:25
【问题描述】:
从 angular 5 (localhost:4200) 到我的 .NET Core WebApi (localhost:55007) 的请求存在很大问题。我想我什么都试过了,都输了..
情况看起来: login.service.ts
import { Injectable, Inject } from '@angular/core';
import {HttpModule, Http, URLSearchParams, Headers, RequestOptions} from
'@angular/http';
@Injectable()
export class LoginService {
constructor( public http: Http) {
}
login(email:string, password:string){
this.http.post('http://localhost:55007/Login/Login',
{email:"fooad@ds.pl",password:"loqweqko"}).subscribe(
res => {
console.log(res);
},
(err) => {
console.log(err);
}
);
}
}
webApi 方法:
[Route("[controller]/[action]")]
public class LoginController : Controller
{
[HttpPost]
public object Login([FromBody] LoginDto model)
{
//something..
}
}
LoginDto 在哪里:
public class LoginDto
{
[Required]
public string Email { get; set; }
[Required]
public string Password { get; set; }
}
请告诉我我做错了什么。我也尝试使用 json.stringify 作为请求中的对象。什么都没有发生.. 我总是得到 404.. (使用邮递员一切正常,GET 方法也有效)。
---------------编辑------- --------
好的,我找到了解决方案 - 问题出在 CORS,我做了同样的事情: How to enable CORS in ASP.net Core WebAPI
对我来说有效。谢谢:)
【问题讨论】:
-
webapi 请求对请求对象中的预期属性是否区分大小写?您是否尝试在 Json 请求中使用大写的电子邮件和密码?
-
@HugoNoro 没关系,我尝试过使用邮递员,这很有效。
-
OK 只是排除选项 :)。不是 100% 确定 web api 的所有怪癖。
-
这可能是 CORS 问题吗?由于您在同一个本地主机中运行,浏览器最初将执行一个 OPTIONS 请求,称为预检,然后将尝试实际请求。您不会在邮递员中遇到该问题,因为您没有执行跨源请求。服务器是否配置为接受 CORS?
-
您是否在浏览器开发者控制台中看到任何 CORS 错误?
标签: angular asp.net-web-api asp.net-core-webapi