我试图将我的asp.net web api与angular 2.进行集成,以便以基本方式检查登录凭据。 asp.net web api代码是
@Injectable()
export class LoginService {
constructor(private _http: Http) { }
postvalidUser(UserName: string, Password: string) {
let headers = new Headers({ 'Content-Type': 'application/json' });
let options = new RequestOptions({headers: headers });
const users = { UserName: UserName, Password: Password };
return this._http
.post("http://localhost:65440/api/User", users, options)
.map(result => result.json());
}
}
login.service.ts文件如下: -
export class LoginComponent implements OnInit {
constructor(private _loginservices: LoginService) { }
ngOnInit() {
}
OnClick(UserName: string, Password:string) {
this._loginservices.postvalidUser(UserName, Password).subscribe(users => console.log(users));
}
}
login.component.ts
Error in curl::curl_fetch_memory(url, handle = handle) :
Timeout was reached: Connection timed out after 10000 milliseconds
现在,当我运行我的应用程序时,它显示错误为
无法加载" my-url":预检的响应包含无效的HTTP状态代码405&&选项" my-url" 405(不允许的方法)
请告诉我我的代码是错误还是遗漏了什么。
答案 0 :(得分:0)
您必须在后端授权OPTIONS请求。
与授权GET,POST和PUT请求的方式相同,只需将OPTIONS添加到该列表即可。
如上所述,选项是您的浏览器发送的检查端点的预检请求。
答案 1 :(得分:0)
您的浏览器正在发送OPTIONS
请求。
您需要创建具有相同路由的HttpOptions
端点,或者创建一个拦截所有HttpOptions
个请求的中间件并返回200.