2016-10-27 2 views
1

Я выполнил инструкцию Cross-Origin Resource Sharing, чтобы получить доступ к localhost: 9000 (Lagom GateWay, где работают мои микросервисы) от localhost: 3000 (где работает мой угловой интерфейс). но все же я сталкиваюсь:Включение фильтра CORS для Lagom Java

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

У кого-нибудь есть образец или проект, позволяющий CORS работать там?

+0

Вы видите заголовки контроля доступа в заголовке ответа при открытии URL-адреса в отдельном окне браузера? – Sreekanth

+0

@Sreekanth Я использую PostMan и в методе GET с почтальоном У меня есть следующие заголовки: Content-Length → 145 Content-Type → application/json; charset = utf-8 Дата → Чт, 27 Окт 2016 18:14:09 GMT –

+0

Если вы не видите заголовки Access, это значит, что они не установлены. Когда вы устанавливаете заголовки и корректируете и применяете их, вы не должны сталкиваться с этой проблемой. Если бы я был вами, я сначала проверю и получаю заголовки ответов в запросе, прежде чем пытаться потреблять – Sreekanth

ответ

1

Это цитата из Джеймса Ропер Он публикует в группе пользователей ЛАГА Google

Самого простой способ получить CORS, работающий в ЛАГЕ будет использовать поддержку CORS Play (в ЛАГЕ построен на вершине игры):

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

+0

И вопрос в группе спросил меня :) –

1

Добавить класс Filters, который расширяет класс Play

public class Filters extends DefaultHttpFilters { 

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

и добавить конф включить этот фильтр

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

вам также может понадобиться настроить фильтр

play.filters.cors { 
    allowedOrigins = null 
} 
1

Ради тех, кто работает с угловыми 4 переднего конца и ЛАГОМ проекта бэкэнд. Мне удалось решить этот путь.

* Я добавил эту строку ниже в моем build.sbt в обоих апи и осущ *

libraryDependencies + = фильтры

В моем каталоге осущ, я создал фильтры папки и добавления кода ниже

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()}; 
    } 
} 

В моей application.conf я добавил код, который следует

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 
} 

После этого я перезапустил микромашины lagom и работал как шарм.