在 Java Playframework 2.4.x + AngularJS 上设置 CORS

Posted

技术标签:

【中文标题】在 Java Playframework 2.4.x + AngularJS 上设置 CORS【英文标题】:Setup CORS on Java Playframework 2.4.x + AngularJS 【发布时间】:2015-09-26 07:49:16 【问题描述】:

我正在尝试在 java playframework 2.4.x 中设置 CORS,但没有成功。 我的前端应用使用的是 AngularJS 1.3.x。

我按照documentation 实现了 Filters 类,但是来自 AngularJS 的预检 OPTIONS 请求在没有明显原因的情况下失败。

这是我关于过滤器的 application.conf 值:

注意:我编辑了域名(我不是 example.com 的所有者);)

...
play.filters.cors 
    allowedOrigins = ["http://example.com", "http://beta.example.com", "http://example.com/beta"]
    allowedHttpMethods = ["GET", "POST", "PUT", "OPTIONS", "DELETE"]
    allowedHttpHeaders = ["Accept", "Content-type"]
    preflightMaxAge = 3 days

...

我的播放应用程序托管在与前端不同的服务器中: 我的主要主机上有一个子目录,其中包含 Angular 应用程序和一个指向播放服务器的子域。

关于我应该在哪里调查的任何想法/建议?

【问题讨论】:

我不得不问一下:你是否在 allowedOrigins 数组中放置了有意义的来源,而不仅仅是 example.com(假设你不是 example.com 的所有者):) @Anton 抱歉,我应该编辑问题以指定我当然已经放置了自己的域。 :) 现已编辑。 【参考方案1】:

经过 3 天的努力,我终于明白了问题所在。 显然,Cisco AnyConnect *** 的一个模块阻止了所有 OPTIONS 预检请求。

与 Play 或 AngularJS 无关。

这是我找到解决方案的链接: http://www.bennadel.com/blog/2559-cisco-anyconnect-***-client-may-block-cors-ajax-options-requests.htm

只需卸载客户端并繁荣就足够了!一切都恢复正常了!

发帖作为其他可能遇到相同问题的人的参考。

最好, E.

【讨论】:

以上是关于在 Java Playframework 2.4.x + AngularJS 上设置 CORS的主要内容,如果未能解决你的问题,请参考以下文章

缺少包'play.filters.cors.CORSFilter' - Play Framework 2.4.6 (Java)

如何使用 JPA 在 playframework 1.2.4 中执行存储过程?

playframework[1.2.4] 500个html页面

playframework 1.2.4 在 jquery 中调用操作并在视图上呈现

Playframework 2.4.x Json 写 List[(String, String)]

使用 PlayFramework 2.4.2 的 ProvisionException