Grails CORS未启用,因为没有来源

Vis*_*han 9 grails groovy cors

我有一个grails 2.2.4申请.我想启用CORS所以我通过在构建配置中使用以下行来安装cors插件.

plugins {
    runtime ':cors:1.1.8'
}
Run Code Online (Sandbox Code Playgroud)

然后在config.groovy中

cors.headers = ['Access-Control-Allow-Origin': '*']
Run Code Online (Sandbox Code Playgroud)

但在此之后,当我运行应用程序时,CORS未启用.所以我调试了CORS插件.问题似乎是在CorsFilter类中的以下方法中

private boolean checkOrigin(HttpServletRequest req, HttpServletResponse resp) {
    String origin = req.getHeader("Origin");
    if (origin == null) {
        //no origin; per W3C spec, terminate further processing for both preflight and actual requests
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

上面一行中的origin参数始终为null,因为请求没有参数'Origin'.有什么我做错了吗?我不是在寻找答案,说明添加一个名为"Origin"的手动标题,因为这不是一个正确的修复

我对CORS很新,所以请求帮助.

Tim*_*Tim 0

现在,我们假设 RestClient 正确发送 Origin 标头。它可能仍然被您的应用程序剥夺。您可以使用Access-Control-Allow-Headers: Origin标头来防止这种情况。

我的 Web 服务遇到的大多数问题是发送了正确的标头,但它们被我的 Web 服务器从消息中删除了。所以我倾向于采取“允许一切”的霰弹枪方式,然后一一删除我不需要的东西。Content-Type, X-Requested-With我的allow-headers标头通常很长,在我的请求最终通过之前我最终不得不包含诸如此类的东西和其他垃圾。

我进一步建议您使用 RestClient 之外的其他工具进行测试,哪怕只是作为健全性检查。我使用 Postman(一款免费的 Chrome 应用程序)进行所有消息传递测试。在我看来,问题在于 RestClient 没有发送正确的 Origin 标头。