我有一些内网脚本我试图跨域使用。我正在使用jQuery 1.7并试图权衡我的选择。我知道有3种选择。
使用JSONP我仅限于GET请求。我有一些我希望发布的大数据,并且URL长度限制是不可行的。
在服务器上设置Access-Control-Allow-Origin有助于jQuery在执行之前执行的任何预检请求。但我受浏览器限制的影响,如Chrome和IE6。我在Chrome 15上,从localhost到任何其他域立即抛出。我已经阅读了IE7 +本机XmlHttpReq图表,我认为这将是一个很好的解决方案,因为我只从Intranet到Intranet,但我想连最新的Chrome都没有。
编写代理页面会起作用,但我认为这可能是前期工作太多了。我在.NET WCF Web服务之间蹦蹦跳跳,并且足以担心包装SOAP请求和设置内容类型。
那你有什么想法?我是否缺少在Chrome中使用此功能的注意事项?我可以忽略任何比IE7更少的东西。或者我应该使用页面代理方法吗?
答案 0 :(得分:2)
按照我将使用它们的顺序:
<强> PROXY 强>
为了确保你得到你想要的东西,请使用代理。对于小规模的东西,你可以在.htaccess中将所有URL(假设你使用Apache)重写为外部主机。工作得很好,调试可能有点困难,所以你最好准备好读取目标服务器上的日志文件,因为如果出现错误(如500或类似)你会得到一个代理错误(通常是502)而不是浏览器。唯一不利的一面是它需要一个体面的服务器,如果负载太大,但简单地将Apache切换到Ngnix会给你很大的提升,所以不要害怕使用它。
使用-控制允许来源强>
很棒,但不支持&lt; IE8,Opera(虽然工作)和其他一些旧的浏览器。如果不需要某些浏览器支持,请执行此操作。关于使用CORS的A fun article
<强> JSONP 强>
如果您无法承担代理生成的额外服务器负载,您可以通过将请求分解为部分并单独发送来解决POST限制,但更多的麻烦不仅仅是代理。除此之外,效果还不错。
答案 1 :(得分:0)
至少还有一个选项 - eaxyXDM。它是专门用于实现跨域JavaScript通信的框架。