通过javascript从其他域调用ASP.NET Web服务

时间:2014-02-25 00:43:19

标签: javascript jquery asp.net ajax web-services

我想用javascript从不同的域名调用asp.net Web服务。

前:

我有网站“www.abc.com”,我希望它使用从X域加载的一些javascript在“www.xyz.com”上调用Web服务。

首先我用这个添加脚本:

document.write(unescape("%3Cscript src=%27http://myscript.com/script.js%27 type=%27text/javascript%27%3E%3C/script%3E"));

这是script.js文件:

$.ajax({
  type: "POST",
  url: "http://www.xyz.com/Service1.asmx/InsertIt",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: OnSuccess,
  error: function (response) {
      alert(response);
  }
});

function OnSuccess(response) {
  alert(response.d);
}

我知道客户端代码中的跨域调用在所有主流浏览器中都是禁忌。为此,我认为你可以使用CORS。

  

使用CORS,即。将Access-Control-Allow-Origin标头设置为   网络中的http://your-caller-domain.com

在这个例子中,我知道调用者域名:www.abc.com。但在现实生活中,我永远不会知道来电者的域名。我知道还有其他方式可以进行跨域调用,例如:JSONP。但这种技术真的很复杂(对我来说)。

所以我想问是否有一种简单的方法来实现跨域呼叫?

2 个答案:

答案 0 :(得分:1)

最好和最安全的方法是使用您的服务器端框架来执行您的http请求,然后您可以将其呈现给您的JS。这否定了客户端调用的任何跨浏览器烦恼。

例如:

  • AJAX点击www.abc.com/getdata.ashx
  • 使用以下方法将您的请求发送至www.xyz.com
  • 返回json字符串或纯文本。这取决于你。
.NET的

WebRequest。底部有一个例子。 另请查看HTTP处理程序(.ashx)以执行请求。不是必需的,但学习起来很好。

答案 1 :(得分:0)

查看以下文档,您将能够执行跨域请求

http://api.jquery.com/jquery.getjson/

   $.getJSON( "http://www.xyz.com/Service1.asmx/InsertIt", function( data ) {
    alert(data.d);
   });