我正在尝试调用外部API。我收到No 'Access-Control-Allow-Origin' header is present on the requested resource
的原因是预检失败,因为请求没有首先触发OPTIONS调用。我不太明白为什么会这样。我已经确认服务器可以接收CORS请求。
public onSubmitUserDetails(value) {
const httpBody = {content: "whatevercontent"}
const httpOptions = {
headers: new HttpHeaders({
'Content-Type': 'application/json',
'Access-Control-Allow-Origin':'*'
})
};
const post = this.httpClient.post("https://whateverdomain.com", httpBody, httpOptions);
post.subscribe();
}
答案 0 :(得分:2)
OPTIONS请求与Angular或其他框架无关。 CORS specfication完全指定浏览器是否发送OPTIONS请求。如果您的请求是simple,仅包含simple headers,并且force preflight flag未设置,则不会发送任何OPTIONS请求。
您不应从客户端发送Access-Control-Allow-Origin
头。您应该从服务器收到它,并且它应该包含您的客户端域或*
。否则,浏览器将不允许您获取响应数据。
如果您提供有关服务器响应的更多信息,我的答案可能会更加详细。