PHP에서 FPM을 활성화한 후 CORS 충돌

PHP에서 FPM을 활성화한 후 CORS 충돌

내 웹 서버의 .htaccess 파일에는 다음 CORS 헤더 세트가 있습니다.

Header set Access-Control-Allow-Origin "example.com"

localhost에서 작업하는 동안 자주 호출하는 PHP 스크립트 중 하나에는 다음 헤더가 설정되어 있습니다.

header("Access-Control-Allow-Origin: *");

이것은 제가 PHP용 FPM을 켠 어제까지 저에게 효과적이었습니다. 이제 다음 오류가 발생합니다.

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://www.example.com/script.php. (Reason: CORS header 'Access-Control-Allow-Origin' does not match '*, example.com').

웹사이트에서 호출할 때가 아니라 localhost에서 호출할 때만 해당 오류가 발생합니다. .htaccessFPM이 활성화되었으므로 PHP를 통해 CORS 헤더를 재정의하는 방법이 있는지 궁금합니다 .

답변1

이유: CORS 헤더 'Access-Control-Allow-Origin'이 '*, example.com'과 일치하지 않습니다.

궁금합니다 . ? Header merge가 아니라 호출된 것 같습니다 . Header set이와 같은 "병합된" 값은 헤더에서 공식적으로 지원되지 않으므로 Allow-Control-Allow-Origin브라우저 지원이 다를 수 있으며 이것이 작동하지 않는 이유를 설명할 것입니다.

.htaccess이제 FPM이 활성화되었으므로 PHP를 통해 CORS 헤더를 재정의하는 방법이 있다면 .

나는 PHP가 Apache를 재정의하는 대신, Apache가 PHP가 설정한 헤더(이전에 설정한)를 재정의하지 않도록 노력해야 할 것이라고 생각합니다. 다음 작업을 시도해 보세요 setifempty.

Header setifempty Access-Control-Allow-Origin "example.com"

조건 을 시험해 볼 수도 있습니다 always. Header always set ....- 이것은 헤더의 다른 "그룹"입니다.기본 onsuccess이는 헤더가 효과적으로 두 번 설정되었음을 의미합니다.

Access-Control-Allow-Origin그러나 나는 여러 헤더가 엄격하게 표준의 일부라고 생각하지 않으므로 브라우저의 동작이 다를 수 있습니다.

StackOverflow에 대한 다음 관련 질문도 참조하세요.

관련 정보