JavaScript – 使用jQuery AJAX的WCF REST – 删除/处理相同的原始策略

所以我试图创建一个由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服务上启用跨域请求.

这里描述:

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

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

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

Access-Control-Allow-Origin: *

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

相关文章

IE6是一个非常老旧的网页浏览器,虽然现在很少人再使用它,但...
PHP中的count()函数是用来计算数组或容器中元素的个数。这个...
使用 AJAX(Asynchronous JavaScript and XML)技术可以在不...
Ajax(Asynchronous JavaScript and XML)是一种用于改进网页...
本文将介绍如何通过AJAX下载Excel文件流。通过AJAX,我们可以...
Ajax是一种用于客户端和服务器之间的异步通信技术。通过Ajax...