Как настроить политику CORS в Cloud Foundry Staticfile Buildpack, чтобы добавить отсутствующий заголовок «Access-Control-Allow-Origin» - PullRequest
1 голос
/ 16 октября 2019

Когда я пытаюсь получить доступ к файлу JavaScript, размещенному в Cloud Foundry, с помощью Staticfile Buildpack , мой браузер отказывается загружать его и отображает в консоли сообщение об ошибке:

Доступ к сценарию в «…» из источника «…» был заблокирован политикой CORS: на запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin»

Как настроить перекрестный доступ-оригинальное совместное использование ресурсов (CORS) в Buildpack Staticfile Cloud Foundry?

1 Ответ

1 голос
/ 16 октября 2019

Чтобы настроить CORS с помощью Staticfile Buildpack:

  1. Создайте файл с именем Staticfile со следующим содержимым:

    root: public
    location_include: includes/*.conf%    
    
  2. Убедитесь, что файлы, которые должно обслуживать ваше приложение, находятся в папке public.

  3. Создайте файл nginx/conf/includes/headers.conf (с его родительскими папками) со следующим содержимым:

     add_header 'Access-Control-Allow-Origin' '*';
    

Вот и все! После следующего cf push будет установлен заголовок CORS.

Для большей ясности см. Также официальный пример кода include_headers_public.

Объяснение

Начиная с документации Staticfile Buildpack :

Если вы создадите файл с именем Staticfile и найдете его в каталоге сборки вашего приложения, Cloud Foundry автоматически используетСборка статического файла при запуске приложения.

(это означает, что вам не нужно указывать staticfile_buildpack в вашем manifest.yml)

Затем следуйте инструкциям в Custom Location.

Настраиваемое расположение позволяет указать пользовательские определения местоположения с дополнительными директивами.

Чтобы настроить блок местоположения файла конфигурации NGINX, выполните следующие действия. ниже.

  1. Установите альтернативный каталог root. Свойство location_include работает только в сочетании с альтернативным root.

  2. Создать файл с директивами NGINX в области расположения. В следующем примере показано, как посетители вашего сайта получают заголовок X-MySiteName HTTP:

    • Файл: nginx/conf/includes/custom_header.conf
    • Содержимое: add_header X-MySiteName BestSiteEver;
  3. Установите переменную location_include в вашем Статическом файле на путь к файлу из предыдущего шага. Этот путь относится к nginx/conf.

    Пример:

    root: public
    location_include: includes/*.conf
    
...