nginx 설정 addheader 'Access - Control - Allow - Origin' '*' 에 도 영역 간 문제 가 존재 합 니 다.

2618 단어 Nginx종합 하 다
1. 문제 설명: 전단 도 메 인 A 는 POST 가 백 엔 드 도 메 인 이름 B 의 인 터 페 이 스 를 요청 할 때 크로스 도 메 인 문제 가 존재 하지 않 습 니 다. 요청 이 실 패 했 을 때 브 라 우 저 는 크로스 도 메 인 을 알려 줍 니 다.
해결: 요청 이 성공 하면 HTTP CODE 는 200 입 니 다.요청 실패 시 HTTP CODE 400, 이때 add헤더 'Access - Control - Allow - Origin' '*' 설정 이 잘못 되 었 습 니 다!HTTP CODE 가 어떤 값 을 사용 하 든 설정 은 always 를 추가 해 야 합 니 다.nginx 버 전 > 1.7.5 시 always 를 추가 할 필요 가 없습니다.
add_header ‘Access-Control-Allow-Origin’ ‘*’ always;
nginx 문서 주소:http://nginx.org/en/docs/http/ngx_http_headers_module.html
문서 원본:
Syntax: add_header name value [always]; Default: — Context: http, server, location, if in location
If the always parameter is specified (1.7.5), the header field will be added regardless of the response code.
2. 추가 설정: 백 엔 드 가 PHP 일 때 addheader ‘Access-Control-Allow-Origin’ ‘’ always; location ~. php {} 모듈 에 추가 합 니 다.아래 설정 중 addheader ‘Access-Control-Allow-Origin’ '’ always; location ~. php {} 위 줄 에 올 바 르 지 않 은 이유 (테스트 되 었 습 니 다. 정확 합 니 다), 문서 에 적 혀 있 습 니 다:
There could be several add_header directives. These directives are inherited from the previous level if and only if there are no add_header directives defined on the current level.
현재 등급 은 add 가 없습니다header 명령 시 이전 단계 의 add 계승header。반대로 현재 등급 에 add 가 있 으 면header, 이전 층 의 add 를 계승 할 수 없 을 것 입 니 다.header。
server {
        listen 80;
        server_name localhost 127.0.0.1 demo.com;
        root /www;
        location ~ \.php {
        client_body_timeout 6s;
        	if ($request_method = 'OPTIONS') {
            	add_header 'Access-Control-Allow-Origin' '*' always;
            	add_header 'Access-Control-Allow-Credentials' 'true';
            	add_header 'Access-Control-Allow-Methods' 'GET, POST, PATCH, DELETE, PUT, OPTIONS';
             	add_header 'Access-Control-Allow-Headers' 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,  Access-Control-Expose-Headers, Token, Authorization';
            	add_header 'Access-Control-Max-Age' 1728000;
            	add_header 'Content-Type' 'text/plain charset=UTF-8';
            	add_header 'Content-Length' 0;
            	return 204;
        	}
        	add_header 'Access-Control-Allow-Origin' '*' always;
        	fastcgi_pass    unix:/run/php7.0-fpm.sock;
        	include         snippets/fastcgi-php.conf;
        	include         fastcgi_params;
        	fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
    	}
}

좋은 웹페이지 즐겨찾기