CORS无法在Chrome / Firefox和Apache上运行

时间:2015-10-16 10:26:51

标签: javascript ajax apache google-chrome cors

我试图使用CORS在浏览器和Apache服务器(驻留在不同的域)之间使用AJAX请求。

在服务器端,我已根据" Header set Access-Control-Allow-Origin in .htaccess doesn't work"中的响应在服务器的httpd.conf部分进行了以下更改:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

我的AJAX调用形式如下:

        $.ajax({
            url        :'https://x.x.x.x/validateCustomerID',
            type       : 'POST',
            cache    : false,
            crossDomain: true,
            contentType: 'application/json',
            beforeSend: function(xhr){
                    xhr.setRequestHeader("Access-Control-Allow-Methods","POST");
                    xhr.setRequestHeader("Access-Control-Allow-Headers","X-Requested-With");
                    xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
            },
            data       : {loginId : '12345'},
            success    : function(response){console.log("Success"+JSON.stringify(response))},
            error      : function(response){console.log("Error"+JSON.stringify(response))}
        });
    }

我还试图评论出beforeSend()以避免预检请求,但它也没有成功。

我在Chrome和Firefox上收到的错误消息是:

  • 在Chrome中:

" XMLHttpRequest无法加载https://x.x.x.x/validateCustomerID。 No' Access-Control-Allow-Origin'标头出现在请求的资源上。起源' null'因此不允许访问。响应的HTTP状态代码为403。"

  • 在Firefox中:

"阻止跨源请求:同源策略禁止在https://x.x.x.x/validateCustomerID读取远程资源。 (原因:CORS请求失败)。"

我的浏览器中没有从服务器收到响应标头,我认为这是CORS必须工作的,并且服务器中的日志显示没有请求从我的浏览器到达。

我真的很感激,如果有人在这里可以帮我解决这个问题,因为我现在已经在这里停留了几天,并且已经使用了几乎所有的命中和试用方法来使这个工作起作用。

1 个答案:

答案 0 :(得分:1)

这是site.conf中的设置,现在可以使用apache2

进行生产
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Headers "authorization, origin, user-token, x-requested-with, content-type"
Header set Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

以供将来参考我强烈建议您为此网站添加书签http://enable-cors.org/index.html