我正在构建一个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标头,必须在服务器上进行哪些额外配置?
答案 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才有效