尽管有Access-Control-Allow-Origin,Cors仍会阻止ajax请求:*

时间:2019-05-15 13:52:03

标签: javascript jquery asp.net iis cors

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时,它运行得很好。

2 个答案:

答案 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': '*'
          },
});