所以我试图创建一个由jQuery调用的C#WCF REST服务.我发现jQuery要求
AJAX调用是在同一起源策略下进行的.我有几个问题,我可以如何进行.
我已经知道了
JSONP与服务器回调的恶意解决方案
2.拥有跨域代理的服务器开销太多.
3.在浏览器中使用Flash进行调用,并在我的WCF服务器根目录下设置crossdomain.xml.
我宁愿不使用这些因为
我不想使用JSON,或至少我不想限制使用它
2.我想将服务静态页面的服务器与服务应用程序状态的服务器分开.
这个时代的闪光是不成问题的.
我在想什么:有什么像Flash的crossdomain.xml文件可用于jQuery?这个“同源”策略是否是jQuery的一部分,还是特定浏览器的限制?如果它只是jQuery的一部分,也许我会尝试挖掘代码来解决它.
编辑:
Shreddd得到了很多地方,见下文.要做到这一点在C#我创建了以下方法,您的所有服务方法需要调用:
private void BypassCrossDomain() { WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin","*"); }
请注意,这允许跨站点脚本攻击,当您需要发送第三方cookie时,您也不能使用“*”.
解决方法
您还可以考虑分出一个额外的HTTP头,以便在您的Web服务上启用跨域请求.
这里描述:
https://developer.mozilla.org/en/HTTP_access_control
Access-Control-Allow-Origin: *
浏览器将允许对该Web服务的跨域请求.在大多数现代浏览器(ff 3.5,IE 8,safari 4)中都支持这一点,并且似乎非常适用于托管在foo.com的jquery应用程序,该应用程序将ajax调用到bar.com