Рубрики
Uncategorized

Быстрая ручка CORS с Nginx

Примечания В некоторых случаях вы хотели бы отключить пересеченные запрашивает ограничения Beca … Помечено webdev, devops, nginx.

Примечания

В некоторых случаях вы хотели бы отключить ограничения запросов Cross Cross, потому что он разрешен только для того же происхождения по умолчанию.

В моем случае я имею дело с несколькими API с разными происхождениями.

Код

1) Получить/варианты конечной точки

  location / {
      # Allow some origins
      #if ($http_origin ~* (https?:\/\/(localhost:8000|myfirstorigin:8000))) {
      # set $cors "1";
      #}

      # Allow all origins
      set $cors "1";

      # Append CORS headers to any request from allowed CORS domain, except OPTIONS
      if ($cors = "1") {
          add_header Access-Control-Allow-Credentials true;
          add_header Access-Control-Allow-Origin $http_origin;
      }

      # OPTIONS (pre-flight) request from allowed CORS domain. return response directly
      if ($request_method = 'OPTIONS') {
           add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS, PUT, DELETE';
           add_header Access-Control-Allow-Credentials true;
           add_header Access-Control-Allow-Headers 'Origin,Content-Type,Accept';
           add_header Content-Length 0;
           add_header Content-Type text/plain;
           return 204;
      }

      proxy_set_header Host $http_host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_pass https://mysecondorigin/api/;
      proxy_http_version 1.1;
      proxy_read_timeout 600s;
  }

2) Опубликовать конечную точку

add_header Access-Control-Allow-Origin $http_origin;

Оригинал: «https://dev.to/javidjms/quick-handle-cors-with-nginx-3m5»