【问题标题】:CORS - missing allow origin header - Nginx on Centos7CORS - 缺少允许来源标头 - Centos7 上的 Nginx
【发布时间】:2021-11-10 19:30:52
【问题描述】:

我不得不在我的本地使用 Centos 7 在 vagrant box 上重新设置一些项目。设置完成后,我收到了 CORS 错误,我无法弄清楚原因。

这是 nginx.conf 文件:

    # For more information on configuration, see:
    #   * Official English Documentation: http://nginx.org/en/docs/
    #   * Official Russian Documentation: http://nginx.org/ru/docs/

    user nginx;
    worker_processes auto;
    error_log /var/log/nginx/error.log;
    pid /run/nginx.pid;

    # Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
    include /usr/share/nginx/modules/*.conf;

    events {
        worker_connections 1024;
    }

    http {
        log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                          '$status $body_bytes_sent "$http_referer" '
                          '"$http_user_agent" "$http_x_forwarded_for"';

        access_log  /var/log/nginx/access.log  main;

        sendfile            on;
        tcp_nopush          on;
        tcp_nodelay         on;
        keepalive_timeout   65;
        types_hash_max_size 4096;

        include             /etc/nginx/mime.types;
        default_type        application/octet-stream;

        # Load modular configuration files from the /etc/nginx/conf.d directory.
        # See http://nginx.org/en/docs/ngx_core_module.html#include
        # for more information.
        include /etc/nginx/conf.d/*.conf;

        server {
            listen       80;
            listen       [::]:80;
            server_name  _;
            root         /usr/share/nginx/html;

            # Load configuration files for the default server block.
            include /etc/nginx/default.d/*.conf;

            error_page 404 /404.html;
            location = /404.html {
            }

            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
            }
        }

    }

这是我的项目配置文件。我认为 .conf 文件的名称并不重要,对吧?

server {
    listen 80;
    server_name authentication.service.local ;


    root /var/www/authentication-api/public;
    index index.php;
    gzip on;
    gzip_http_version  1.1;
    gzip_comp_level    5;
    gzip_min_length    256;
    gzip_proxied any;
    gzip_types
        application/atom+xml
        application/javascript
        application/json
        application/rss+xml
        application/vnd.ms-fontobject
        application/x-font-ttf
        application/x-web-app-manifest+json
        application/xhtml+xml
        application/xml
        font/opentype
        image/svg+xml
        image/x-icon
        text/css
        text/plain
        text/x-component;

    gzip_vary on;
    gzip_disable "MSIE [1-6]\.(?!.*SV1)";

    add_header X-Frame-Options "SAMEORIGIN";

    
    
    location /proxy.html {
        root /var/www/authentication-api/public;
    }
    
    location /xdomain.min.js {
        root /var/www/authentication-api/public;
    }
    

    location / {
        
        if ($request_method = 'OPTIONS') {
            add_header 'Access-Control-Allow-Origin' '*';
            add_header 'Access-Control-Allow-Credentials' 'true';
            add_header 'Access-Control-Allow-Methods' 'GET, POST, PUT, DELETE, OPTIONS, PATCH';

            add_header 'Access-Control-Allow-Headers' 'DNT,Authorization,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type';
            add_header 'Access-Control-Max-Age' 1728000;
            add_header 'Content-Type' 'text/plain charset=UTF-8';
            add_header 'Content-Length' 0;
            return 204;
        }
        
        try_files $uri $uri/ /index.php?$query_string;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        
        include fastcgi_params;
    }
}

我可以使用 ping authentication.service.local 正确 ping 项目

但是当我尝试使用浏览器访问端点时(例如:登录,以前可以使用),我收到错误 Failed to load resource: Origin http://localhost:7000 is not allowed by Access-Control-Allow-Origin

我认为添加 add_header 'Access-Control-Allow-Origin' '*'; 应该可以解决此问题,但我想了解为什么它不能解决?

还有 nginx error.log 显示

2021/09/15 17:50:17 [error] 3290#3290: *8 open() "/usr/share/nginx/html/token/user" failed (2: No such file or directory), client: 10.0.5.1, server: _, request: "POST /token/user HTTP/1.1", host: "authentication.service.local", referrer: "http://localhost:7000/"

由于我的/var/www 文件夹指向我的项目文件夹,"/usr/share/nginx/html/token/user" 不正确吗?

感谢您的帮助。

【问题讨论】:

    标签: nginx cors centos7


    【解决方案1】:

    您正在发送POST 请求,但只为OPTIONS 方法设置Access-Control-Allow-Origin 标头。

    【讨论】:

      猜你喜欢
      • 2021-04-28
      • 2021-11-16
      • 2022-07-26
      • 2021-11-27
      • 2021-12-13
      • 1970-01-01
      • 2013-11-28
      • 2016-12-10
      • 1970-01-01
      相关资源
      最近更新 更多