带有授权标头的角度/离子CORS错误

时间:2018-10-15 20:29:16

标签: angular ionic-framework cors http-headers iis-10

我正在构建一个Ionic应用程序(角度4),我想使用在IIS 10上使用C#构建的API。

起初是这样发出POST请求的:

this.http.post(my_url, my_credentials, { headers = new HttpHeaders({
    'Content-Type': 'application/x-www-form-urlencoded',
  })
});

我收到错误提示 404错误的消息:

Failed to load https://some_url/api/login: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' is therefore not allowed access.

经过一番研究,我在web.config上添加了

access-control-allow-origin: *  

并且解决了CORS问题。

此后,我检索了访问令牌并想将其用于其他请求
所以我又发出了一个带有授权标头的帖子请求:

this.http.post(my_url, my_body, { headers = new HttpHeaders({
    'Content-Type': 'application/x-www-form-urlencoded',
    'Authorization': 'Bearer ' + token
  })
});

然后我得到了和以前相同的错误。

因此,总结这些请求是在同一应用程序上。第一个请求很好用,但是第二个没有。

要接受额外的Authorization标头,必须在服务器上进行哪些额外配置?

3 个答案:

答案 0 :(得分:0)

尝试添加到web.config:

Access-Control-Allow-Methods: POST, GET (..and more Methods that you need.)
Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept

我不确定是否可以使用,但是您可以尝试一下:P

答案 1 :(得分:0)

您可能想要添加proxy.conf.json,以将您的应用程序URL重定向到适当的服务器URL。以下文章可能会有所帮助: https://juristr.com/blog/2016/11/configure-proxy-api-angular-cli/

答案 2 :(得分:0)

我使用并且为asp.net核心后端工作

const headers = new HttpHeaders()
   .set('Content-Type', 'application/json')
   .set('Accept', 'application/json')
   .set('Authorization', 'Bearer ' + token); 

this.http.post(my_url, my_credentials, headers)

不记得这是否对http有效,我认为这对ff httpClient才有效