2017-01-28 10 views
0

Я использую Java-Джерси и Jetty на моей стороне сервера и имеют следующий фрагмент кода:Разрешение Access-Control-Allow-Origin из любой точки мира (Java и ember.js)

responseBuilder.header("Access-Control-Allow-Origin", "http://localhost:4200"); 
    responseBuilder.header("Access-Control-Allow-Headers", "origin, content-type, accept, authorization, auth-token"); 
    responseBuilder.header("Access-Control-Allow-Credentials", "true"); 
    responseBuilder.header("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT"); 
    responseBuilder.allow("OPTIONS"); 

и я м с помощью ember.js на клиентской стороне и имеют следующий код:

/app/adapters/application.js:

import DS from 'ember-data'; 

export default DS.RESTAdapter.extend({ 
    host: 'http://127.0.0.1:20000', 

    ajax(url, method, hash) { 
     hash = hash || {}; 
     hash.crossDomain = true; 
     hash.xhrFields = { 
      withCredentials: true 
     }; 
     return this._super(url, method, hash); 
    } 
}); 

сочетание кода работает, что он посылает COOKIE как часть запрос и разрешает Access- Control-Allow-Origin.

Однако я обеспокоен тем, что «http://localhost:4200» жестко закодирован. Хотя это не проблема до развертывания, я полагаю, это ограничивает трафик только с http://localhost:4200? Это веб-приложение и , очевидно, мне нужно разрешить доступ от любого клиента, прибывающего из любого места. Какие изменения необходимо внести в мой код?

ответ

1

, очевидно, мне нужно разрешить доступ с любого клиента наступающим из любой

Я думаю, что есть недоразумение здесь. Access-Control-Allow-Origin указывает сервер вашего клиентского приложения.

Работает ли ваше клиентское приложение на определенном происхождении?

  • Если да: проблем нет. Определите в приложении ваше приложение profiles. Таким образом, вы можете определить происхождение сервера вашего клиентского приложения в профиле вашей продукции.
  • Если нет: вы можете использовать "*", чтобы принять все корни в вашем фильтрах корков. Если этот фрагмент кода написан вами, просто параметризуйте второй параметр, чтобы указать имя хоста клиента. Это должно быть примерно так: request.getRemoteHost();.
+0

При использовании подстановочного знака вы не можете использовать учетные данные tho. – Lux

+0

Я положил «*» и действительно выбросил ошибку. Я должен отправить JWT в качестве файла cookie на сервер, поэтому я не могу использовать подстановочный знак. – ikevin8me

+0

@ykaragol, как вы сказали, «Access-Control-Allow-Origin указывает сервер вашего клиентского приложения» ... Я с облегчением слышу это. Да, мое серверное приложение будет работать по определенному происхождению. Поэтому, основываясь на том, что вы сказали, у меня не будет никаких проблем, верно? – ikevin8me

 Смежные вопросы

  • Нет связанных вопросов^_^