Назад | Перейти на главную страницу

Nginx на ubuntu 12.04 продолжает отказывать в запросах OPTIONS

Я пытаюсь выполнять перекрестные вызовы Ajax внутри службы angular в ионном приложении, протестированном в chrome. Я пытаюсь сделать POST на моем API, а nginx продолжает отказываться от моих OPTIONS.

XMLHttpRequest cannot load http://wss.dev:8080/api/checkin. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access. The response had HTTP status code 405.

Я пробовал другую конфигурацию, но, похоже, ни одна из них не работает.

Мой conf следующий:

server {
   listen                *:8080;

 server_name           wss.dev www.wss.dev;
 client_max_body_size 200m;

 index  index.html index.htm index.php;

 access_log            /var/log/nginx/wss.dev.access.log;
 error_log             /var/log/nginx/wss.dev.error.log;
 add_header 'Access-Control-Allow-Origin' $http_origin;
 add_header 'Access-Control-Allow-Credentials' 'true';
 add_header 'Access-Control-Allow-Methods' 'OPTIONS, GET, POST, PUT, DELETE' ;
 add_header 'Access-Control-Allow-Headers' 'Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Mx-ReqToken,X-Requested-With,XMLHttpRequest';

 location ~ .php$ {

     root  /var/www/public;
     try_files $uri $uri/ /index.php /index.php$is_args$args$is_args$args;
     index  index.html index.htm index.php;
     fastcgi_index index.php;
     fastcgi_param SCRIPT_FILENAME $request_filename;
     fastcgi_param APPLICATION_ENV dev;
     fastcgi_pass 127.0.0.1:9000;
     fastcgi_split_path_info ^(.+\.php)(/.*)$;
     include fastcgi_params;
 }
 location / {

     root  /var/www/public;
     try_files $uri $uri/ index.php /index.php$is_args$args;
 }
 sendfile off;
}

Я пробовал как в этом примере: https://michielkalkman.com/snippets/nginx-cors-open-configuration.html

Я пробовал разные конфигурации, и я пытался изменить все, что у меня сделано в angular, но ничего не работает ...

Отсутствие ответа может быть вызвано конфигурацией, подобной этой:

if ($request_method !~ ^(GET|HEAD|POST|PUT|DELETE)$ ) {
    return 444;
}

Это означает, что nginx закроет соединение без надлежащего ответа, поэтому это так сложно отладить.

Найдите в своей конфигурации код возврата 444. Если вы найдете что-то подобное, просто добавьте OPTIONS к списку).

Вы пытаетесь публиковать сообщения из локального окна разработчика? В Chrome есть ошибка это не поддерживает localhost для запросов CORS измените его на «mylocalbox.dev», и он должен работать.