使用jQuery AJAX的WCF REST - 删除/解决相同的源策略

csa*_*uve 10 javascript ajax rest jquery cross-domain

所以我正在尝试创建一个由jQuery调用的C#WCF REST服务.我发现jQuery要求AJAX调用是在相同的源策略下进行的.关于如何进行,我有几个问题.

我已经知道了;
1. JSONP与服务器回调的hacky解决方案
2.拥有跨域代理的服务器开销太多.
3.在浏览器中使用Flash进行调用并在我的WCF服务器根目录下设置crossdomain.xml.

我宁愿不使用这些因为;
1.我不想使用JSON,或者至少我不想限制使用它
2.我想将提供静态页面的服务器与提供应用程序状态的服务器分开.
3.这个时代的闪光是不可能的.

我在想:有没有类似Flash的crossdomain.xml文件适用于jQuery?这个"同源"策略是jQuery的一部分还是特定浏览器中的限制?如果它只是jQuery的一部分,也许我会尝试挖掘代码来解决它.





编辑:
Shreddd得到了相当多的信息,见下文.要在C#中执行此操作,我创建了以下方法,您需要调用所有服务方法:

private void BypassCrossDomain()
{
  WebOperationContext.Current.OutgoingResponse.Headers.Add("Access-Control-Allow-Origin", "*");
}
Run Code Online (Sandbox Code Playgroud)

重要的是要注意,这允许跨站点脚本攻击,当您需要使用您的请求发送第三方cookie时,您也不能使用"*".

shr*_*ddd 5

您还可以考虑吐出额外的http标头,以便在您的Web服务上启用跨域请求.

这在这里描述:

http://www.w3.org/TR/cors/

https://developer.mozilla.org/en/HTTP_access_control

因此,如果您将以下标头添加到您的Web服务提供的任何内容中:

Access-Control-Allow-Origin: *
Run Code Online (Sandbox Code Playgroud)

浏览器将允许跨域请求到该Web服务.这在大多数现代浏览器(ff 3.5,IE 8,safari 4)中都受支持,并且似乎非常适用于在域foo.com上托管的jquery应用程序,这些应用程序对bar.com进行ajax调用