Hapi CORS при использовании Nginx в качестве балансировщика нагрузки - PullRequest
0 голосов
/ 07 декабря 2018

У меня есть Nginx с широко открытым ядром, как видно на enable-cors.org .Что я вижу в запросе GET

Access-Control-Allow-Origin: http://localhost:3000
Access-Control-Allow-Methods: GET, POST, PUT, OPTIONS
Access-Control-Allow-Headers: Authorization,If-Modified-Since,Cache-Control,Content-Type,Accept
Access-Control-Expose-Headers: Content-Length,Content-Range

Однако, когда я пытаюсь использовать Chrome со значениями POST, я получаю такую ​​ошибку:

Доступ к XMLHttpRequest в «http://0.0.0.0/user' из источника» http://localhost:3000' заблокирован политикой CORS: в запрошенном ресурсе отсутствует заголовок «Access-Control-Allow-Origin».

Я пытаюсь получить заголовок Авторизация из ответа на мой POST запрос

1 Ответ

0 голосов
/ 08 декабря 2018

Вот как я это исправил.

  1. Включить CORS в блоке сервера Hapi

    const server = Hapi.Server({
      debug: { request: ["error"] },
      port: process.env.APP_PORT,
      host: process.env.APP_SERVER,
      routes: {
        cors: true
      }
    });
    
  2. Создать обратный прокси в Nginx

    proxy_pass http://localhost:4000;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
    proxy_set_header X-Forwarded-User $remote_user;
    proxy_set_header X-Real-IP $remote_addr;
    
  3. Просмотр заголовков
    Вы увидите сообщение об ошибке множественное значение для заголовка Access-Control-Allow-Origin.

  4. Подавить Access-Control-Allow-Origin от Хапи, скрыв его с помощью nginx config

    proxy_hide_header Access-Control-Allow-Origin;
    

EDIT

Удалось заставить его работать безnginx со следующими значениями в блоке сервера Hapi

cors: {
  origin: "ignore",
  additionalHeaders: ["Authorization"],
  additionalExposedHeaders: ["Authorization"]
},
...