使用jQuery的CORS请求 – $ .ajax()

我正在开发一个Web应用程序,其中数据来自不同的域。 我的意思是在我的应用程序中,几乎90%的请求是跨域请求。

在IIS上部署此应用程序时,我无法获取数据。

服务器部署在http://some.ip.add/crmservice客户端部署在http://diffent.ip.add/saascrm上

我使用jQuery 2.0使用$ .ajax()以异步方式获取数据;

注意: 数据以xml格式显示

还为web.config文件添加了一些内容。

       

这是我的片段。

 $.support.cors = true; $.ajax({ type: "GET", url: 'http://some.ip.add/crmservice/crmservice.asmx/HandShake', contentType: "application/json; charset=utf-8", dataType: "json", crossDomain: true, beforeSend: function (request) { // debugger; request.setRequestHeader("Access-Control-Allow-Origin", '*'); }, error: function (xhr, status, error) { try { // debugger; // debugger; //Here i am getting error : Access denied in IE 9.0 and and just "error" in firefox. var msg = JSON.parse(xhr.responseText); alert(msg.Message); } catch (e) { // debugger; alert(xhr.statusText); } return true; }, success: function (data) { debugger; xmlDoc1 = $.parseXML(data.d); $xml1 = $(xmlDoc1); if ($xml1.find('Result').text() == '0') { $(this).MessageBox('success', $xml1.find('Message').text()); $("#uxDBName").prop("disabled", false); $("#uxSUPassword").prop("disabled", false); $("#uxServiceURL").prop("disabled", true); GetListOfB1Databases(url); } } }); 

我的服务器代码是:

Global.asax中

 protected void Application_BeginRequest(object sender, EventArgs e) { HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache); HttpContext.Current.Response.Cache.SetNoStore(); EnableCrossDmainAjaxCall(); } private void EnableCrossDmainAjaxCall() { HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*"); if (HttpContext.Current.Request.HttpMethod == "OPTIONS") { HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Methods", "GET, POST"); HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Headers","Content-Type, Accept"); HttpContext.Current.Response.AppendHeader("Access-Control-Allow-Origin", "*"); HttpContext.Current.Response.AppendHeader("Access-Control-Max-Age", "1728000"); HttpContext.Current.Response.End(); } } //Web method [ScriptMethod(ResponseFormat = ResponseFormat.Json), WebMethod(EnableSession = true)] public string HandShake() { return General.Response("0", "Tenant is in reachable. Please specify SAP Business One Company database\r\nand 'manager' Password", ""); } 

我也发现了一些解决方案,我发现IE 8和9不支持CORS.IE 8 * 9不会创建XMLHttpRequest对象的实例。 它创建XDomainRequest,因此需要检查用户代理。 我在这里找到了另一种解决方案

现在我的问题是我已经使用$ .ajax()方法,几乎​​90%的调用都是跨域调用。 我不想在我的框架中做出这个重大改变。

有没有使用$ .ajax()的解决方案?

请帮助我,我被困一周以来。

提前致谢。

感谢您为我提供的所有合作和帮助。 我找到了解决方案

  var url = $("#uxServiceURL").val(); $.ajax({ crossOrigin: true, url: url + '/HandShake', error: function (xhr, status, error) { try { alert('Error'); } catch (e) { alert(xhr.statusText); } return true; }, success: function (data) { var d1 = data.replace(/\</g, '<').replace(/\>/g, '>') xmlDoc1 = $.parseXML(d1); $xml1 = $(xmlDoc1); if ($xml1.find('Result').text() == '0') { $(this).MessageBox('success', $xml1.find('Message').text()); } } });