我有一些内部网脚本,我正试图去跨域。我正在使用jQuery 1.7,并试图权衡我的选择。我知道有3个选项
- JSONP
- 在webserver报头上设置Access-Control-Allow-Origin
- 写入代理页面
使用JSONP,我仅限于GET请求。我有一些大数据,我想张贴,它是不可行的URL长度限制。
在服务器上设置Access-Control-Allow-Origin有助于jQuery在执行之前可能做的任何预飞行请求。但我受制于浏览器的限制,比如Chrome和IE6。我在Chrome 15和从本地主机到任何其他域立即抛出。我读过IE7+原生XmlHttpReq图表,我认为这将是一个很好的解决方案,因为我从内部网到内部网,但我想即使是最新的chrome也不行。
写一个代理页面将工作,但我认为它可能是太多的前期工作。我在。net WCF web服务之间切换,有足够的担心包装SOAP请求和设置内容类型。
你是怎么想的?是否有考虑因素,我错过了这项工作在Chrome?我可以忽略任何低于IE7的内容。还是应该直接使用页面代理方法?
按照我使用它们的顺序:
要绝对确保你得到你想要的,使用代理。对于小规模的内容,您可以在.htaccess中执行一行代码,将所有url(如果您使用的是Apache)重写到外部主机。工作正常,但调试可能有点困难,所以您最好准备好读取目标服务器上的日志文件,因为如果出现错误(如500或类似),您会在浏览器中获得代理错误(通常是502)。唯一的缺点是,如果负载太大,它需要一个像样的服务器,但简单地将Apache切换到nnix会给你一个很大的提升,所以不要害怕使用它。
Access-Control-Allow-Origin
一个伟大的事情,但不支持
JSONP
如果您负担不起代理产生的额外服务器负载,您可以通过将请求分解成部分并单独发送它们来绕过POST限制,但这比简单的代理麻烦得多。
至少还有一个其他选项—exxyxdm。它是一个专门设计用于实现跨域javascript通信的框架。