一尘不染

Jquery Ajax Post中的CORS问题

jsp

我正在从jquery做ajax发布,这样我将调用两个属于不同域的rest服务来执行我的业务逻辑。这样做时,我遇到了一个CORS问题,并使用了Google引用,我对我的ajax添加了crossDomain:true,现在,仅当在ajax中未指定标头(如下所示)并且如果我添加标头时,此方法才能完全正常低于错误。请指教。

$.ajax({
    method : 'post',
    dataType: 'json',
    crossDomain: true,
    headers : {
        "country" : "us",
    },
    url : 'myurl.do',
    async : true,
    beforeSend : function() {       
    },
    success : function(data) {
        console.log('success', data);               
    },
    error : function(request, status, error) {
        console.log('Error!', status, error, request);
    },
    complete : function() {
        console.log('Completed!!');
    }
});

如果在Ajax中添加标头,则错误如下

“错误!” “错误”“”对象{readyState:0,getResponseHeader:.ajax /
jqXHR.getResponseHeader(),getAllResponseHeaders:.ajax /
jqXHR.getAllResponseHeaders(),setRequestHeader:.ajax /
jqXHR.setRequestHeader(),override / MimeType :.
.overrideMimeType(),statusCode:.ajax / jqXHR.statusCode(),中止:.ajax /
jqXHR.abort(),状态:.Deferred / promise.state(),始终:.Deferred /
promise.always(),然后:.Deferred / promise.then(),还有11个…}


阅读 838

收藏
2020-06-10

共1个答案

一尘不染

添加自定义标头使其成为一个复杂的请求,要求发出Preflight OPTIONS请求才能在发出POST请求之前获得CORS权限。

检查浏览器的开发人员工具“网络”选项卡。您应该在那里看到OPTIONS请求。

您需要配置服务器,以使用针对实际需要的URL设置的访问控制标头来对其进行响应。

2020-06-10