
내 웹 서버의 .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에서 호출할 때만 해당 오류가 발생합니다. .htaccess
FPM이 활성화되었으므로 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에 대한 다음 관련 질문도 참조하세요.