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

时间:2014-03-02 12:18:59

标签: jquery web-services

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

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

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

如果有人能帮助我在http://www.antoinecloutier.com/WebService1.asmx/HelloWorld

获取网络服务的代码,我将不胜感激

我在服务器上创建了一个测试页面,网络服务运行正常 - > http://antoinecloutier.com/test.html

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

谢谢!

1 个答案:

答案 0 :(得分:3)

您可以通过启用CORS

来设置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中,您可以按如下方式修改响应,

<?php header('Access-Control-Allow-Origin: *'); ?>

Note:

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

您可以在Access-Control-Allow-Headers中配置相同内容,如下所示

web.config