내 Nginx 구성의 내용이 내 백엔드가 POST 요청에서 'Access-Control-Allow-Origin' 헤더를 보내지 않는 이유를 암시할 수 있습니까?

내 Nginx 구성의 내용이 내 백엔드가 POST 요청에서 'Access-Control-Allow-Origin' 헤더를 보내지 않는 이유를 암시할 수 있습니까?

POST*편집 1: 오류는 요청 에서만 발생하는 것 같습니다.

에 프런트엔드 웹사이트가 있습니다 localhost. 에 등록 페이지가 있습니다localhost/register

웹사이트는 사용자를 등록하기 위해 백엔드 함수를 호출합니다.localhost:8080/api/register

저는 Axios를 사용하여 사용자 이름과 비밀번호를 게시합니다. 브라우저는 OPTIONS 사전 요청과 POST 요청이라는 두 가지 요청을 보냅니다.

사용자가 성공적으로 생성되었지만 브라우저에서 POST 요청에 대해 오류가 발생합니다.

Reason: CORS header ‘Access-Control-Allow-Origin’ missing

실제로 POST에 대한 응답에는 누락되어 있습니다. 내 백엔드 cors 파일이 올바르게 구성되었다고 가정하면, 이를 차단하거나 헤더를 잘못된 위치로 프록시하는 Docker + Nginx 설정의 조합으로 인해 문제가 발생할 수 있습니까?

이것은 내 nginx 구성입니다.

server {
    listen 8080;
    index index.php index.html;    
    error_log /var/log/nginx/error.log;
    access_log /var/log/nginx/access.log;
    root /var/www/html/public;
    
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    
    location ~ \.php$ {        
        try_files $uri = 404;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass php:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }
    
}

  server {    
    listen       80;       
      location / {      
      proxy_pass      http://node:3000;
      
    }
  }

그리고 이것은 내 것입니다 docker-compose.yml:

networks:
    mynetwork:
        driver: bridge

services:
    nginx:
        image: nginx:stable-alpine
        container_name: nginx
        ports:
            - "8080:8080"
            - "80:80"            
        volumes:            
            - ./php:/var/www/html 
            - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
            
        depends_on:
            - php
            - node
        networks:
            - mynetwork
    
    php:        
        build:
            context: ./php
            dockerfile: Dockerfile
        container_name: php
        user: "1000:1000"
        volumes:
            - ./php:/var/www/html
        ports:
            - "9000:9000"
        networks:
            - mynetwork

    node:
        build:
            context: ./react
            dockerfile: Dockerfile
        container_name: next        
        volumes:
            - ./react:/var/www/html                
        ports:
            - "3000:3000"       

        networks:
            - mynetwork


           

**편집 2:

백엔드는 Laravel이고 이를 처리하는 CORS 미들웨어가 있습니다. 실제로 요청이 오류 없이 통과되고 요청에서만 이 오류가 발생하기 때문에 작동하는 GETOPTIONS같습니다 POST.

cors.php이것은 Laravel의 CORS 구성 파일( )입니다 .

'paths' => ['api/*', 'sanctum/csrf-cookie'],

'allowed_methods' => ['*'],

'allowed_origins' => ['http://localhost'],

'allowed_origins_patterns' => ['*'],

'allowed_headers' => ['*'],

'exposed_headers' => [],

'max_age' => 0,

'supports_credentials' => true

관련 정보