nginx 설정 CORS 크로스 필드 구현
최근 에 사진 을 올 리 는 수요 가 있 습 니 다. 분 류 를 위해 인 터 페 이 스 를 다른 도 메 인 이름 으로 배치 하기 때문에 도 메 인 간 문 제 를 해결 해 야 합 니 다.
사고의 방향
처음에는 백 엔 드 코드 에 cors 정책 을 직접 설정 하려 고 했 는데 요청 이 모두 nginx 에서 들 어 왔 기 때문에 cors 를 nginx 로 이동 시 켜 서 이 루어 졌 습 니 다.또한 지정 한 하위 도 메 인 이름 에 만 접근 권한 을 놓 을 수 있 기 때문에 다음 과 같이 설정 합 니 다.
Access-Control-Allow-Origin *.test.com
직접 측정 할 수 없습니다. * 와 지정 한 도 메 인 이름 만 사용 할 수 있 습 니 다.
이루어지다
다행히 nginx 는 if 명령 을 지원 합 니 다. 도 메 인 이름 에 대해 정규 검 사 를 하면 지정 한 하위 도 메 인 이름 크로스 도 메 인 을 실현 할 수 있 습 니 다.다음 테스트 에서 브 라 우 저의 options 가 백 엔 드 에 보 낸 것 을 발견 하고 알 수 없 는 것 을 처리 하지 않 았 습 니 다.좋 습 니 다. nginx 에서 백 엔 드 에 보 내지 않 고 if 명령 으로 http 요청 유형 을 판단 하 십시오.여기에 두 개의 if 를 사 용 했 습 니 다. 가장 구덩이 에 있 는 일이 발생 했 습 니 다. nginx 는 여러 개의 if 명령 에서 어떤 명령 은 마지막 if 가 있어 야 유효 합 니 다. 앞 에 있 는 것 은 덮어 씁 니 다.결국 반복 add헤더 해결.
주의 점
클 라 이언 트 ajax 가 with Credentials 속성 을 true 로 설정 해 야 쿠키 를 보 낼 수 있 습 니 다.또한 쿠키 는 도 메 인 이름 을 업로드 할 때 사용 할 수 있 습 니 다. 그렇지 않 으 면 url 매개 변수 등 을 통 해 전달 해 야 합 니 다.
nginx 설정
location / {
#
if ($http_origin ~ \.test\.com) {
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Headers DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type;
add_header Access-Control-Max-Age 1728000;
}
# options , 204
# if add_header , nginx ,
if ($request_method = OPTIONS) {
add_header Access-Control-Allow-Origin $http_origin;
add_header Access-Control-Allow-Methods GET,POST,OPTIONS;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Headers DNT,X-CustomHeader,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type;
add_header Access-Control-Max-Age 1728000;
return 204;
}
#
proxy_set_header Host $host;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://xxx.xxx.xxx.xxx;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
간단! Certbot을 사용하여 웹 사이트를 SSL(HTTPS)화하는 방법초보자가 인프라 주위를 정돈하는 것은 매우 어렵습니다. 이번은 사이트를 간단하게 SSL화(HTTP에서 HTTPS통신)로 변경하는 방법을 소개합니다! 이번에는 소프트웨어 시스템 Nginx CentOS7 의 환경에서 S...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.