使用asp.net web api和Angular 2,预检的响应具有无效的HTTP状态代码405

时间:2018-01-15 11:47:51

标签: asp.net angular http asp.net-web-api2

我试图将我的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(不允许的方法)

请告诉我我的代码是错误还是遗漏了什么。

2 个答案:

答案 0 :(得分:0)

您必须在后端授权OPTIONS请求。

与授权GET,POST和PUT请求的方式相同,只需将OPTIONS添加到该列表即可。

如上所述,选项是您的浏览器发送的检查端点的预检请求。

答案 1 :(得分:0)

您的浏览器正在发送OPTIONS请求。

您需要创建具有相同路由的HttpOptions端点,或者创建一个拦截所有HttpOptions个请求的中间件并返回200.