使用jQuery在远程服务器上调用Web服务

我已经被困在这个问题上好几个小时了,无法找到有效的答案,可能是因为我对这些事情缺乏知识/经验。

我知道由于Same-Origin限制,我无法在具有XMLHttpRequest的远程服务器上加载Web服务,但显然这可以通过jsonp数据类型完成并提供回调函数但我真的无法弄清楚如何制作它工作。

远程服务器将是我的,所以我真的不关心远程服务器可以发回任何恶意javascript代码的可能性。

如果有人能帮助我在http://www.antoinecloutier.com/WebService1.asmx/HelloWorld上获取Web服务的代码,我将不胜感激。

我在我的服务器上创建了一个测试页面,Web服务工作正常 – > http://antoinecloutier.com/test.html

现在,我需要能够从其他服务器访问该Web服务。

谢谢!

您可以通过启用CORS Cross Domain AJAX Calls using jquery进行Cross Domain AJAX Calls using jquery

例如:

  jQuery.support.cors = true; $.ajax({ url: 'http://crossdomainurl', type: 'GET', dataType: 'json', contentType: "application/json; charset=utf-8", success: function (data) { WriteResponse(data); }, error: function (x, y, z) { alert(x + '\n' + y + '\n' + z); } }); 

要确保跨域正常工作,您必须向Web服务响应添加Access-Control-Allow-Origin: *响应标头。

在.NET WCF服务中,您可以将其添加到服务的global.asax中,如下所示,

 protected void Application_BeginRequest(object sender, EventArgs e) { HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin","*"); } 

在PHP中,您可以修改响应,如下所示,

  

Note:

发送Access-Control-Allow-Origin标头允许基本的跨源访问,但是启用AspNetCompatibilityRequirements调用ASMX ScriptServices,ASPX页面方法和WCF服务等ASP.NET服务需要您的站点使用一个额外的CORS标头进行响应:访问 – Access-Control-Allow-Headers

您可以在web.config配置相同的内容,如下所示,