我有一个WEB API,我正在使用POSTMAN消费,它完全正常:
接头:
内容类型:应用/ JSON X-开发者ID:asdasdas X-API密钥:asdasdas 授权:Bearer sasdasdsa 时区:摩洛哥标准时间
当我在POSTMAN中执行GET请求时,它工作正常,但是从角度2(离子2)我得到以下错误:
Request header field Time-Zone is not allowed by Access-Control-Allow-Headers in preflight response.
let params: URLSearchParams = new URLSearchParams();
params.set('date', date);
//Header
let headers = new Headers({
'Content-Type': AppSettings.ContentType,
'X-Developer-Id': AppSettings.XDeveloperId,
'X-Api-Key': AppSettings.XApiKey,
'Time-Zone': AppSettings.time_zone,
'Authorization': AppSettings.Authorization + localStorage.getItem("AccessToken")
});
var RequestOptions: RequestOptionsArgs = {
url: AppSettings.UrlAvailability + userId,
method: 'GET',
search: params,
headers: headers,
body: null
};
return this.http.get((AppSettings.UrlAvailability + userId), RequestOptions)
.map(res => res.json())
.do(data => { data },
err => console.log('error: ' + err));
首先,我认为API开发人员必须在服务器端执行某些操作,例如在CORS上启用时区标头,但如果情况确实如此,那么我们会在POSTMAN上遇到相同的错误,但它可以正常工作很好。
我在这里缺少什么?
答案 0 :(得分:1)
这是您需要在服务器上配置的内容。您首先需要确保您拥有CORS支持。我不使用ASP.NET,因此我不知道该怎么做。我很确定快速谷歌搜索会找到答案。然后,您需要确保在该服务器CORS配置中,您希望客户端能够发送的特殊标头添加到CORS允许的标头中。这就是错误所说的:标头未包含在响应标头Access-Control-Allow-Headers
中。响应标头看起来像
Access-Control-Allow-Headers: X-Developer-Id, X-Api-Key, Time-Zone, Authorization
要了解有关CORS的更多信息,请参阅MDN
首先,我认为API开发人员必须在服务器端执行某些操作,例如在CORS上启用时区标头,但如果情况确实如此,那么我们会在POSTMAN上遇到相同的错误,但它可以正常工作那里很好
不,邮递员没有相同的限制。它是一个原生桌面应用程序。有趣的事实:99%的人发布了有关CORS问题的问题,在他们的帖子中有某个地方" ...但它与Postman合作!"。所以不要感到难过: - )