【问题标题】:Response for preflight has invalid HTTP status code 405 with asp.net web api and Angular 2使用 asp.net web api 和 Angular 2 对预检的响应具有无效的 HTTP 状态代码 405
【发布时间】:2018-01-15 11:47:51
【问题描述】:

我试图将我的 asp.net web api 与 angular 2.for 以基本方式检查登录凭据集成。 asp.net web api 代码是

public void postvalidUser(string UserName, string Password)
        {
            try
            {
                var login = uData.Users.Where(x => x.UserName == UserName).ToList();
                if (login != null && login.Count > 0)
                {
                    foreach (var log in login)
                    {
                        if (log.UserName == UserName && log.Password == Password)
                        {
                            Console.WriteLine("login ok");

                        }

                    }
                }
                else
                {
                   Console.WriteLine("login fail");

                }

            }

            catch (Exception ex){

                Console.WriteLine(ex);
            }

        }  

login.service.ts 文件为:-

@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.component.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));

  }





}

现在当我运行我的应用程序时,它会向我显示错误

未能加载“my-url”:预检响应包含无效的 HTTP 状态代码 405 && OPTIONS “my-url” 405(不允许的方法)

请告诉我我的代码是错误还是缺少什​​么。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的先生,我已经在我的 web.config 文件中添加了所有 POST PUT 等选项,但它仍然给我同样的错误。我还在我的控制器中放置了以下代码 // OPTIONS http-verb handler public HttpResponseMessage OptionsUser() { var response = new HttpResponseMessage(); response.StatusCode = HttpStatusCode.OK;返回响应; } 我仍然有同样的错误
    • 请大家给我建议
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-04
      • 2016-10-10
      • 2016-10-28
      • 2023-04-10
      • 2018-05-02
      • 1970-01-01
      • 2018-02-19
      • 2018-03-08
      相关资源
      最近更新 更多