JSON REST Get-Request 正在等待用于 Chrome/Firefox 的 Tomcat 上的 CORS
Posted
技术标签:
【中文标题】JSON REST Get-Request 正在等待用于 Chrome/Firefox 的 Tomcat 上的 CORS【英文标题】:JSON REST Get-Request is pending with CORS on Tomcat for Chrome/Firefox 【发布时间】:2014-01-25 00:18:48 【问题描述】:我们使用来自http://software.dzhuvinov.com/cors-filter.html 当前版本 1.9 的 CORS 过滤器在 Tomcat 7.0.42 上构建了带有 Jersey 1.9.1 的 REST 后端。
从 Chrome 版本 31 或 Firefox 版本 26 执行以下 JS 代码时:
$.ajax(
type: 'GET', contentType: 'application/json',
url: 'http://tomcat.bailamos-salsa.ch/bailamossalsa/app-api/course',
success: function(response)
alert(response);
);
预检 OPTIONS 请求返回代码 200,但对于某些设备,以下 GET 请求挂起并且永远不会返回。我们在 Windows 和 OSX 上进行了测试,在某些设备上它可以工作,但在其他设备上它不能使用相同的浏览器版本。
我们在服务器上调试了 CORS 过滤器,但无法识别任何错误。
可以在这里找到一个测试用例: http://jsfiddle.net/d27Zb/
非常感谢任何帮助,我们很绝望。
【问题讨论】:
我们发现防病毒软件(Mac OSX 上的 Sohpos)网络扫描功能会阻止此 CORS 设置在 Chrome 和 Firefox 上正常工作。关闭此功能可解决问题! 【参考方案1】:对于以后遇到这种情况的人来说,最简单的调试方法是分析系统之间的差异。如果您在多个环境中使用同一个浏览器并且它只在其中一些环境中有效,则可能是防火墙问题。正如 cmets 中所述,在他们的 Mac 上关闭防火墙的 CORS 过滤器解决了这个问题。
【讨论】:
以上是关于JSON REST Get-Request 正在等待用于 Chrome/Firefox 的 Tomcat 上的 CORS的主要内容,如果未能解决你的问题,请参考以下文章
在 Play 中请求 Content-Type! REST Web 服务框架
将 JSON 格式的文件发送到 Mule 3.8 中的 REST 服务