【问题标题】:How to enable CORS in Play Framework 2.5.9 in Java如何在 Java 中的 Play Framework 2.5.9 中启用 CORS
【发布时间】:2018-03-22 18:57:15
【问题描述】:

我在 Play Framework 项目中启用 CORS 时遇到了困难。我尝试使用我的 api(我制作了一个带有 javascript 的 html 文件)。它一直像这样返回:

XMLHttpRequest 无法加载 http://localhost:9000/generateToken。对预检请求的响应未通过访问控制检查:请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'null' 不允许访问。响应的 HTTP 状态代码为 403。

我已经不知道该怎么做了,我按照 Play 的文档进行操作,但它似乎不起作用。

这些是我的 Filters.java:

import com.google.inject.Inject;
import play.http.HttpFilters;
import play.mvc.EssentialAction;
import play.mvc.EssentialFilter;
import play.filters.cors.CORSFilter;

public class Filters extends EssentialFilter implements HttpFilters {

    @Inject
    private CORSFilter corsFilter;


    @Override
    public EssentialAction apply(EssentialAction next) {
        return corsFilter.asJava().apply(next);
    }

    @Override
    public EssentialFilter[] filters() {
        EssentialFilter[] result = new EssentialFilter[1];
        result[0] = this;

        return result;
    }
}

那么这是我的配置:

play.filters.enabled += "play.filters.cors.CORSFilter"
//
play.http.filters = "Filters"
play.filters.cors {
  # allow all paths
  pathPrefixes = ["/"]
  # allow all origins
  allowedOrigins = null
  allowedHttpMethods = ["GET", "POST", "PUT", "DELETE"]
  # allow all headers
  allowedHttpHeaders = null
}

有谁能正确回答这个问题吗? T_T T_T

【问题讨论】:

    标签: java playframework


    【解决方案1】:

    filters() 的实现已关闭:

    @Override
    public EssentialFilter[] filters() {
        final List<EssentialFilter> filters = new ArrayList<>();
        filters.add(corsFilter.asJava());
        return filters.toArray(new EssentialFilter[0]);
    }
    

    Filters 类只需要实现 HttpFilters

    【讨论】:

      猜你喜欢
      • 2014-04-04
      • 1970-01-01
      • 2016-08-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      相关资源
      最近更新 更多