请求标头字段预检响应中的Access-Control-Allow-Headers不允许使用时区

时间:2017-04-28 13:29:16

标签: javascript angular asp.net-web-api ionic-framework cors

我有一个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上遇到相同的错误,但它可以正常工作很好。

我在这里缺少什么?

1 个答案:

答案 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合作!"。所以不要感到难过: - )