Ubuntu 12.04 上的 Nginx 一直拒绝 OPTIONS 请求

Ubuntu 12.04 上的 Nginx 一直拒绝 OPTIONS 请求

我正在尝试在 Chrome 中测试的 Ionic 应用程序中的 Angular 服务内进行跨域 Ajax 调用。我尝试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.

我尝试了不同的配置,但似乎都不起作用。

我的配置如下:

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

我尝试了不同的配置,并尝试改变我的所有角度,但没有任何效果......

答案1

没有响应可能是由类似这样的配置导致的:

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

这意味着 nginx 将在没有正确响应的情况下关闭连接,这就是为什么调试如此困难的原因。

在您的配置中搜索 444 返回代码。如果您发现类似上述内容,请将其添加OPTIONS到列表中)。

答案2

您是否尝试从本地开发箱发帖?Chrome 有一个错误不支持localhostCORS 请求,将其更改为“mylocalbox.dev”之类的内容就可以了。

相关内容