从jQuery访问Web服务 - 跨域

Chr*_*sCa 18 ajax wcf jquery json cross-domain

我试图从jQuery客户端访问一个wcf服务

特别是这个例子 http://www.codeproject.com/KB/aspnet/WCF_JQUERY_ASMX.aspx#4

当客户端网页与服务位于同一域时,一切正常

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

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

任何想法如何让这个工作交叉daomain?

Gle*_*ord 10

您正在运行同源策略.您正在访问的Web服务必须与发出请求的jQuery脚本位于同一域中.所有浏览器都强制执行此策略,以防止 - 例如 - 跨Web站点脚本和Web应用程序的代码注入攻击.

它有各种各样的方法,包括JSONP,Proxies或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);
}
Run Code Online (Sandbox Code Playgroud)

  • 如果您正在谈论使用代理,那么是的,这是完全正确的.SOP由浏览器强制执行,因此PHP,ASP,ColdFusion等不受其约束.您的JS向代理发出请求,代理向服务发出请求,然后代理将结果传递回JS. (3认同)