我试图从jQuery客户端获取一个wcf服务
@H_301_2@具体来说这个例子
http://www.codeproject.com/KB/aspnet/WCF_JQUERY_ASMX.aspx#4 @H_301_2@当客户端网页与服务在同一个域上时,所有功能都很好 @H_301_2@一旦将客户端网页移动到另一个域,它就会中断。它无法到达服务,请求失败 @H_301_2@对于所有示例,ASMX,REST和WCF都会发生这种情况 @H_301_2@任何想法如何让这个工作交叉daomain?
http://www.codeproject.com/KB/aspnet/WCF_JQUERY_ASMX.aspx#4 @H_301_2@当客户端网页与服务在同一个域上时,所有功能都很好 @H_301_2@一旦将客户端网页移动到另一个域,它就会中断。它无法到达服务,请求失败 @H_301_2@对于所有示例,ASMX,REST和WCF都会发生这种情况 @H_301_2@任何想法如何让这个工作交叉daomain?
解决方法
你正在反对同源政策。您正在访问的Web服务必须位于与发出请求的jQuery脚本相同的域上。所有浏览器都会执行此策略,以防止跨网站脚本和Web应用程序的代码注入攻击。
@H_301_2@有各种方法,包括JSONP,代理或Flash。
@H_301_2@我们需要一些更多的信息,然后才能建议您应该使用哪种技术。我倾向于喜欢JSONP.但在此期间,这里有一些亮点:
@H_301_2@http://taossa.com/index.php/2007/02/08/same-origin-policy/
@H_301_2@https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript
@H_301_2@以下是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); }