我想用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。但这种技术真的很复杂(对我来说)。
所以我想问是否有一种简单的方法来实现跨域呼叫?
答案 0 :(得分:1)
最好和最安全的方法是使用您的服务器端框架来执行您的http请求,然后您可以将其呈现给您的JS。这否定了客户端调用的任何跨浏览器烦恼。
例如:
www.abc.com/getdata.ashx
。www.xyz.com
。WebRequest。底部有一个例子。 另请查看HTTP处理程序(.ashx)以执行请求。不是必需的,但学习起来很好。
答案 1 :(得分:0)
查看以下文档,您将能够执行跨域请求
http://api.jquery.com/jquery.getjson/
$.getJSON( "http://www.xyz.com/Service1.asmx/InsertIt", function( data ) {
alert(data.d);
});