我正致力于Ionic框架的角度js。当我请求数据时,它总是返回状态0作为错误。我认为问题是HTTP访问控制(CORS)。但我已将 Access-Control-Allow-Origin设置为* 。我还需要做些什么?请帮忙。谢谢。
Angular JS Code
var params = {
limit: 5,
page: 1
};
$http.post('https://www.example.com/getdata.php', { params: params })
.success(function (data,status) {
console.log("Conection available . Status s" + status);
})
.error(function (data, status, headers, config) {
console.log("Error Status " + status);
});
返回标题
Access-Control-Allow-Origin → *
Access-Control-Request-Headers → *
Access-Control-Request-Method → POST
Cache-Control → max-age=2592000
Connection → Keep-Alive
Content-Length → 1933
Content-Type → application/json
Date → Thu, 08 Sep 2016 06:47:31 GMT
Expires → Sat, 08 Oct 2016 06:47:31 GMT
Keep-Alive → timeout=5, max=100
Server → Apache/2.4.20 (Ubuntu)
更新
所以浏览器日志中的实际错误代码是
XMLHttpRequest无法加载https://www.example.com/getdata.php。请求标题字段在预检响应中,Access-Control-Allow-Headers不允许使用Content-Type。
我尝试更新Access-Control-Allow-Headers标头,如下所示。
$http.post('https://www.example.com/getdata.php',
{ params: params },
{ 'Access-Control-Allow-Headers': 'application/json' })
并更新了响应标头,如下所示。
Access-Control-Allow-Headerss → application/json
Access-Control-Allow-Origin → *
Access-Control-Request-Headers → *
Access-Control-Request-Method → POST
Cache-Control → max-age=2592000
Connection → Keep-Alive
Content-Length → 1933
Content-Type → application/json
Date → Thu, 08 Sep 2016 07:22:03 GMT
Expires → Sat, 08 Oct 2016 07:22:03 GMT
Keep-Alive → timeout=5, max=100
Server → Apache/2.4.20 (Ubuntu)
但仍然没有运气。请帮忙。
答案 0 :(得分:2)
请求标题字段预检响应中的Access-Control-Allow-Headers不允许使用Content-Type
Access-Control-Allow-Headers
不支持通配符。您正在使用*
,但必须明确指定允许的标头。
我尝试更新Access-Control-Allow-Headers标头,如下所示。
Access-Control-Allow-Headers
是一个响应标头。您必须在服务器上设置它,而不是在客户端上。
您的客户端JavaScript不允许自己阅读其他人的数据。这将使得获得许可毫无意义的要求。
答案 1 :(得分:0)
尝试将域名完全放在Access-Control-Allow-Origin中,我也看到了同样的问题 并将cordova的白名单插件添加到您的项目中
对于Android模拟器,请使用10.0.2.2