我正在尝试从 jQuery 客户端访问 WCF 服务
具体来说这个例子 http://www.codeproject.com/KB/aspnet/WCF_JQUERY_ASMX.aspx#4
当客户端网页与服务位于同一域时,一切正常
一旦我将客户端网页移动到另一个域,它就会崩溃。无法到达服务,请求失败
所有示例、ASMX、REST 和 WCF 都会发生这种情况
有什么想法可以让这个跨域工作吗?
最佳答案
您遇到了同源策略。您正在访问的 Web 服务必须与发出请求的 jQuery 脚本驻留在同一域中。所有浏览器都强制执行此策略,以防止针对 Web 应用程序的跨站点脚本攻击和代码注入(inject)攻击。
有多种解决方法,包括 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);
}
关于jquery - 从 jQuery 访问 Web 服务 - 跨域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2697557/