不允许使用角度405方法,并且显示“临时标题”错误

时间:2020-07-28 22:08:16

标签: c# angular asp.net-web-api cors

这让我发疯。我正在尝试向我的api服务器发送一个简单的请求并附加标头。首先是给我显示此临时标题的消息,然后它将在下一个请求时失败

  Provisional headers are shown
Accept: application/json, text/plain, */*
Access-Control-Allow-Credentials: true
Cache-Control: no-cache
Expires: Sat, 01 Jan 2000 00:00:00 GMT
Pragma: no-cache
Referer: https://mywebsite.com/
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.106 Safari/537.36

如果我在拦截方法中添加以下数据,则会收到错误消息。

 intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    request = request.clone({ headers: request.headers.set('Access-Control-Allow-Credentials', 'true') }); 
    request = request.clone({ headers: request.headers.set('Cache-Control', 'no-cache') });
    request = request.clone({ headers: request.headers.set('Pragma', 'no-cache') });
    request = request.clone({ headers: request.headers.set('Expires', 'Sat, 01 Jan 2000 00:00:00 GMT') });      
    
    return next.handle(request);
  }

如果我删除它并且不添加标头,那么我不会收到错误消息,但是最终我将需要在标头中发送其他数据,例如authtoken和用户ID。 为什么在附加到标题时出现此405错误?

当我明确允许使用Option和Post方法时,为什么还会告诉我不允许使用的方法 enter image description here

2 个答案:

答案 0 :(得分:1)

大约一个月前,我遇到了同样的问题。

您需要为“选项”动词创建一个基本的http ok响应。将其放在您的基本api控制器中。首先发送选项请求,并且需要一个正确的响应回调,然后才能继续将选项传递给API

 public HttpResponseMessage Options()
{
  return new HttpResponseMessage { StatusCode = HttpStatusCode.OK };
}

答案 1 :(得分:0)

尝试添加 标头中的API密钥(例如:x-my-api-key) 标头中的API值(例如:7e807890-c777-466a-897)

希望这可以帮助...