jquery - 使用 jQuery 调用远程服务器上的 Web 服务

标签 jquery web-services

我已经在这个问题上困扰了几个小时,无法找到有效的答案,也许是因为我缺乏对此类事情的知识/经验。

我知道由于同源限制,我无法使用 XMLHttpRequest 在远程服务器上加载 Web 服务,但显然这可以使用 jsonp 数据类型并提供回调函数来完成,但我真的不知道如何实现使其发挥作用。

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

如果有人可以帮助我通过 http://www.antoinecloutier.com/WebService1.asmx/HelloWorld 的网络服务获取一些工作代码,我将不胜感激。

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

现在,我需要能够从不同的服务器访问该 Web 服务。

谢谢!

最佳答案

您可以制作Cross Domain AJAX Calls using jquery通过启用 CORS

例如:

 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);
        }
  });

为了确保跨域正常工作,您必须添加 Access-Control-Allow-Origin: * Web 服务响应的响应 header 。

在 .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 header 允许基本的跨源访问,但调用 ASP.NET 服务(例如 ASMX ScriptServices、ASPX 页面方法和启用了 AspNetCompatibilityRequirements 的 WCF 服务)需要您的站点使用一个附加 CORS header 进行响应:Access-Control-Allow-Headers

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

<system.webServer>
  <httpProtocol>
    <customHeaders>
      <add name="Access-Control-Allow-Origin" value="*" />
      <add name="Access-Control-Allow-Headers" value="Content-Type" />
    </customHeaders>
   </httpProtocol>
</system.webServer>

关于jquery - 使用 jQuery 调用远程服务器上的 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22127442/

相关文章:

javascript - 在javascript中调用方法,但抛出错误?

java - 对于 SOAP,我们是否需要从 WSDL 生成客户端 stub ?

java - Axis 2 是否支持 REST?

java - Rest API json 响应中出现异常完整类名

jquery - 在 jQuery 中切换元素样式的最佳、最快的方法是什么?

jquery - 如果输入值等于特定文本,则显示 div

jquery - 当我将鼠标悬停在子菜单上时,如何更改向上三 Angular 形的背景颜色

jquery - 在iframe中检测滚动到底部?

web-services - 在 WSDL 中指定安全策略信息是常见的做法吗?

mysql - 跨多个节点的时间日志记录建模