iam有一个Web应用程序(用php / codeigniter编写,并带有一些jquery),iam试图通过Ajax请求从AspNet Web服务获取数据。
处理请求的jQuery代码如下:
$.ajax({
url: webServiceURL,
type: "POST",
dataType: "xml",
data: soapMessage,
contentType: "text/xml; charset=\"utf-8\"",
success: (response)=>{
//process response
});
},
error: (error)=>{
console.log(error);
}
});
}
问题是,它被CORS阻止了。我把它弄乱了一点,现在我收到了这个错误(在我没有发送正确的原始报头之前,现在我发送了*):
选项http://10.208.1.27/planws/Service.asmx 403(禁止)
从原点“ http://10.208.1.27/planws/Service.asmx”到“ http://localhost”的XMLHttpRequest的访问已被CORS策略阻止:对预检请求的响应未通过访问控制检查:它没有HTTP正常状态。
即使我在服务器上配置IIS以响应“ Access-Control-Allow-Origin:*”标头,我也遇到此错误。我还应该做些什么才能使其正常工作?
在Chrome开发人员工具/网络中,响应标头如下所示:
访问控制允许来源:*
当我在禁用了网络安全性的情况下运行chrome时,它运行得很好。
答案 0 :(得分:0)
如果您仅在本地设置中遇到此错误,则可以将第三方扩展程序用于chrome。
Allow-Control-Allow-Origin
扩展名。
这不是正确的方法,但是您可以使用它。
答案 1 :(得分:0)
我建议您将Web服务响应从xml切换为json,并使用Jsonp。
$.ajax({
url: webServiceURL,
data: myData,
type: 'GET',
crossDomain: true,
dataType: 'jsonp',
success: function() { alert("Success"); },
error: function() { alert('Failed!'); },
headers: {
'Access-Control-Allow-Origin': '*'
},
});