Enabling the CORS filter for Lagom Java

本秂侑毒 提交于 2019-12-11 05:40:58

问题


I have followed the instruction of Cross-Origin Resource Sharing in order to access localhost:9000 (Lagom GateWay where my microservices are running) from localhost:3000 (where my angular front-end is running). but still I face:

XMLHttpRequest cannot load http://localhost:9000/api/myservice. No 'Access-Control-Allow-Origin' header is present on the requested resource 

doe anyone have a sample or project that enabling CORS works there?


回答1:


This is a quote from James Roper He publish in the Lagom google user group

The simplest way to get CORS working in Lagom is to use Play's CORS support (Lagom is built on top of Play):

https://www.playframework.com/documentation/2.5.x/CorsFilter




回答2:


Add a Filters class which extends the Play class

public class Filters extends DefaultHttpFilters {

  @Inject
  public Filters(CORSFilter corsFilter) {
    super(corsFilter);
  }
}

and add conf to include that filter

play.http.filters = "io.my.http.Filters"

you may also need to configure the filter

play.filters.cors {
  allowedOrigins = null
}



回答3:


For the sake of others working with Angular 4 front-end and lagom backend project. I have managed to solve this way.

*I added this line below in my build.sbt in both api and impl *

libraryDependencies += filters

In my impl directory, i created folder filters and added the code below

import play.mvc.EssentialFilter;
import play.filters.cors.CORSFilter;
import play.http.HttpFilters;

import javax.inject.Inject;

public class Filters implements HttpFilters {

    @Inject
    CORSFilter corsFilter;

    public EssentialFilter[] filters() {
        return new EssentialFilter[]{corsFilter.asJava()};
    }
}

In my application.conf i added the code that follows

play.filters.hosts {
  # Allow requests to example.com, its subdomains, and localhost:9000.
  allowed = ["localhost:5000", "localhost:9000"]
}

play.http.filters = "filters.Filters"

play.filters.cors {
  # Filter paths by a whitelist of path prefixes
  pathPrefixes = ["/"]

  # The allowed origins. If null, all origins are allowed.
  allowedOrigins = null
  allowedHttpMethods = ["GET", "POST"]
  allowedHttpHeaders = ["Accept"]
  preflightMaxAge = 3 days
}

After this, i restarted my lagom microservices and it worked like a charm.



来源:https://stackoverflow.com/questions/40291472/enabling-the-cors-filter-for-lagom-java

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!