Nginx и включение CORS - PullRequest
       10

Nginx и включение CORS

0 голосов
/ 03 февраля 2019

Конфигурация NGINX не включает CORS

Я целый день искал, как включить перекрестные запросы, и пока ничего не получил, у меня угловое приложение, работающее на 127.0.0.1:3081/3080и я хочу, чтобы он делал запросы CORS к API, который в настоящее время работает на виртуальной машине vagrant с nginx 1.11.

server {
listen 80;
listen 443 ssl http2;
server_name harzreisen.test;
root "/home/vagrant/Code/harzreisen2/harzreisen-server/api";

index index.html index.htm index.php;

charset utf-8;

access_log off;
error_log  /var/log/nginx/harzreisen.test-error.log error;

sendfile off;

client_max_body_size 100m;

location / {

  dav_methods PUT DELETE MKCOL COPY MOVE;

  # Preflighted requestis
  if ($request_method = OPTIONS) {
    add_header "Access-Control-Allow-Origin" *;
    add_header "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD, DELETE";
    add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept";
    return 200;
  }

  # CORS WHITELIST EVERYTHING
  # This is allowing everything because I am running
  # locally so there should be no security issues.
  if ($request_method = (GET|POST|OPTIONS|HEAD|DELETE)) {
    add_header "Access-Control-Allow-Origin" *;
    add_header "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept";
  }

   try_files $uri $uri/ /index.php$is_args$args;
}
}

Это просто веб-сайт не достигает запроса POST, он дает мне 200 на OPTIONS ивот это .. Может кто-нибудь объяснить мне, что происходит?

1 Ответ

0 голосов
/ 07 августа 2019

Я бы предложил использовать more_set_headers в nginx.conf вместо add_header;следуя вашему примеру:

    more_set_headers "Access-Control-Allow-Origin" *;
    more_set_headers "Access-Control-Allow-Methods" "GET, POST, OPTIONS, HEAD, DELETE";
    more_set_headers "Access-Control-Allow-Headers" "Authorization, Origin, X-Requested-With, Content-Type, Accept";
    (...)

Директива more_set_headers является частью HttpHeadersMore модуля, который включен в аромат nginx-extras изnginx, вы можете установить его на Ubuntu 16, выполнив:

sudo apt-get install nginx-extras

...