我试图在我的浏览器和使用CORS的Apache服务器(位于不同域中)之间工作。CORS不适用于Chrome/Firefox和Apache
在服务器端,我做了在服务器按响应的httpd.conf中部分有以下改变的“Header set Access-Control-Allow-Origin in .htaccess doesn't work”:
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(),但它要么没有成功。
我收到关于铬和Firefox错误消息是:
- 在铬:
“的XMLHttpRequest不能加载https://x.x.x.x/validateCustomerID否‘访问控制允许来源’标头是否存在。因此不允许Origin'null'访问,响应的HTTP状态码为403。
- 在Firefox:
“跨来源请求阻止:同源策略不允许读取远程资源在https://x.x.x.x/validateCustomerID。(原因:CORS请求失败)”
在我的浏览器中没有收到服务器的响应头信息,我认为这是CORS的强制性工作,并且在服务器上登录并不显示从我的浏览器发出的请求。
我真的很感激,如果有人在这里可以帮我解决这个问题,因为我在这里呆了好几天了,并且几乎用了所有的命中和试用方法来使这件事情起作用。
你启动Apache模块头'a2enmod headers' ? –
你为什么试图在**请求**中设置访问控制标题? – Quentin
@Jacob,我尝试使用a2enmod头部命令激活apache模块头,但它给了我一个错误,它是一个无效的命令。然后,我在某处读取默认情况下在Apache中启用了Mod_headers的地方,因此我将它保留原样。这可能是一个问题吗? –