Chrome与Firefox - 为什么CORS标头的行为方式不同,我应该如何使用它们?

时间:2016-12-10 21:34:58

标签: javascript jquery ajax google-chrome firefox

我正在使用CORS标头进行Ajax调用。简短的版本是在Firefox中,一切运行良好,在Chrome中我收到错误:"Refused to set unsafe header Access-Control-Request-Method",对于Access-Control-Request-Headers也是如此。

所以,我只是感到困惑。喜欢,非常困惑。为了使CORS在Chrome和Firefox中正常工作,我必须做些什么?

我要说的一个奇怪的部分是,尽管有错误,但Chrome确实执行了Ajax调用。

我总体上很困惑,我是JavaScript的新手,也是CORS的新手,只是想让这个工作。

PS - 所有这些都是通过IntelliJ进行的本地开发,但不确定,但这可能是一个因素。

PPS。简短摘要:一切都在Firefox中运行良好,我在Chrome中遇到错误但它仍然正确执行请求。

PPPS。这是我用于所有Ajax调用的代码。

function(uri, method, json){
    return $.ajax({
        url: orgProps.serverOrigin + ensurePrecedingSlash(uri),
        type: method,
        headers: (function(){
            var result = {
                "Access-Control-Request-Headers": [
                    "X-Requested-With",
                    "Authorization"
                ],
                "Access-Control-Request-Method": method
            };

            var token = jwt.getToken();
            if(token !== undefined && token !== null){
                result.Authorization = restoreBearerPrefix(token);
            }
            return result;
        })(),
        contentType: "application/json; charset=utf-8",
        data: (function(){
            if(json !== undefined) {
                return JSON.stringify(json);
            }
            return null;
        })()
    })
    .done(function(data, status, jqXHR){
        var token = jqXHR.getResponseHeader("Authorization");
        jwt.storeToken(token);
    });

0 个答案:

没有答案