我正在从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!!'); } });
“错误!” “错误”“”对象{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个…}
添加自定义标头使其成为一个复杂的请求,要求发出Preflight OPTIONS请求才能在发出POST请求之前获得CORS权限。
检查浏览器的开发人员工具“网络”选项卡。您应该在那里看到OPTIONS请求。
您需要配置服务器,以使用针对实际需要的URL设置的访问控制标头来对其进行响应。