小编典典

从jQuery访问Web服务-跨域

ajax

我正在尝试从jQuery客户端访问wcf服务

具体来说,此示例
http://www.codeproject.com/KB/aspnet/WCF_JQUERY_ASMX.aspx#4

当客户端网页与服务位于同一域时,所有方法都可以正常工作

一旦我将客户端网页移到另一个域,它就会中断。无法到达服务,请求失败

所有示例(ASMX,REST和WCF)都会发生这种情况

任何想法如何使这个跨岛工作?


阅读 252

收藏
2020-07-26

共1个答案

小编典典

您正在违反同源策略。您正在访问的Web服务必须与发出请求的jQuery脚本位于同一域中。所有浏览器都实施此策略,以防止(例如)对Web应用程序进行跨站点脚本编写和代码注入攻击。

围绕它有多种方法,包括JSONP,代理或Flash。

在建议您应该使用哪种技术之前,我们需要更多信息。我倾向于JSONP。但是与此同时,这里有一些轻松的阅读:

http://taossa.com/index.php/2007/02/08/same-origin-
policy/

https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript

这是JSONP的使用示例:

url = "http://www.test.com/getData.php?callback=parseResults";

document.body.appendChild((function() {
    var newScript = document.createElement("script");
    newScript.type = "text/javascript";
    newScript.src = url;
    return newScript;
})());

function parseResults(data) {
    alert(data);
}
2020-07-26