내 .htaccess
헤더 설정이 작동하지 않는 이유를 알 수 없습니다 .
내 .htaccess
파일 내용 :
Header set Access-Control-Allow-Origin *
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Allow-Headers "*"
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
그러나 내가을 제거 Header
하고 추가하면 index.php
모든 것이 잘 작동합니다.
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: *");
내가 무엇을 놓치고 있습니까?
답변
이것은 작동합니다.
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
답변
기록을 위해 똑같은 문제가 발생했으며 어떤 답변도 효과가 없었습니다.
헤더 검사기 도구를 사용했습니다. http://www.webconfs.com/http-header-check.php
내 IP ( http://192.0.2.1/upload
) 로 테스트하고 있었는데 결과 는 다음과 같습니다.
HTTP/1.1 301 Moved Permanently =>
Date => Sat, 10 Jan 2015 04:03:35 GMT
Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
Location => http://192.0.2.1/upload/
Content-Length => 380
Connection => close
Content-Type => text/html; charset=iso-8859-1
리디렉션이 발생했으며 AJAX 요청이 리디렉션을 따르거나 따르지 않습니다.
도메인 끝에 슬래시가 누락 된 것으로 밝혀졌습니다 ( http://192.0.2.1/upload / )
마지막에 슬래시로 다시 테스트했으며 아래에 이것을 얻었습니다. 스크립트에도 슬래시를 추가했으며 이제 작동 중입니다.
HTTP/1.1 200 OK =>
Date => Sat, 10 Jan 2015 04:03:53 GMT
Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By => PHP/5.3.8
Access-Control-Allow-Origin => *
Access-Control-Allow-Methods => PUT, GET, POST, DELETE, OPTIONS
Access-Control-Allow-Headers => *
Content-Length => 1435
Connection => close
Content-Type => text/html
이 도구를 사용하여 헤더가 양호한 지 테스트하고 발생하는 문제를 해결하세요.
답변
GoDaddy에 공유 호스팅이 있습니다. 나도이 질문에 대한 답이 필요했고 주변을 검색 한 결과 가능하다는 것을 알았습니다.
.htaccess 파일을 작성하여 작업 페이지와 동일한 폴더에 넣었습니다. .htaccess 파일의 내용은 다음과 같습니다.
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
내 ajax 호출은 다음과 같습니다.
$.ajax({
url: 'http://www.mydomain.com/myactionpagefolder/gbactionpage.php', //server script to process data
type: 'POST',
xhr: function() { // custom xhr
myXhr = $.ajaxSettings.xhr();
if(myXhr.upload){ // check if upload property exists
myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload
}
return myXhr;
},
//Ajax events
beforeSend: beforeSendHandler,
success: completeHandler,
error: errorHandler,
// Form data
data: formData,
//Options to tell JQuery not to process data or worry about content-type
cache: false,
contentType: false,
processData: false
});
이 기사를 참조하십시오.
답변
다음에주의하십시오.
Header add Access-Control-Allow-Origin "*"
모든 사람에게 액세스 권한을 부여하는 것은 전혀 현명하지 않습니다. 알고있는 신뢰할 수있는 호스트 목록 만 허용하는 것이 좋습니다.
Header add Access-Control-Allow-Origin "http://aaa.example"
Header add Access-Control-Allow-Origin "http://bbb.example"
Header add Access-Control-Allow-Origin "http://ccc.example"
문안 인사,
답변
Apache 모듈 헤더 a2enmod 헤더를 활성화했으며 문제가 해결되었습니다.
답변
외부 루트 폴더의 .htaccess에서 시도하십시오.
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
주의 사항 : Header add Access-Control-Allow-Origin “*”이것은 모든 사람에게 액세스 권한을 부여하는 데 전혀 현명하지 않습니다. 다음을 사용해야한다고 생각합니다.
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "http://example.com"
</IfModule>
답변
헤더 검사기 사이트 http://www.webconfs.com/http-header-check.php 에 대한 링크에 대한 Miro의 답변을 +1했습니다 . 사용할 때마다 불쾌한 광고가 표시되지만 그럼에도 불구하고 Access-Control-Allow-Origin 헤더가 있는지 확인하는 데 매우 유용합니다.
내 웹 페이지의 javascript에서 .json 파일을 읽고 있습니다. 내 .htaccess 파일에 다음을 추가하면 IE 11 (버전 11.447.14393.0)에서 내 웹 페이지를 볼 때 문제가 해결되는 것으로 나타났습니다.
<FilesMatch "\.(json)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
또한 /etc/httpd.conf(Apache의 구성 파일)에 다음을 추가했습니다.
AllowOverride All
헤더 검사기 사이트는 Access-Control-Allow-Origin 헤더가 현재 전송되고 있음을 확인했습니다 (Miro에게 감사합니다!).
그러나 Firefox 50.0.2, Opera 41.0.2353.69 및 Edge 38.14393.0.0 은 Access-Control-Allow-Origin 헤더 없이도 파일을 모두 가져옵니다 . (참고 : 내가 사용한 두 도메인이 동일한 IPv4 주소의 동일한 서버에서 호스팅되기 때문에 IP 주소를 확인하고있을 수 있습니다.)
그러나 Chrome 54.0.2840.99m (64 비트)는 Access-Control-Allow-Origin 헤더를 무시하고 실패하고 다음과 같이 잘못보고합니다.
요청 된 리소스에 ‘Access-Control-Allow-Origin’헤더가 없습니다. 따라서 ‘ {mydomain} ‘ 원본 은 액세스가 허용되지 않습니다.
나는 이것이 일종의 “처음”이어야한다고 생각한다. IE가 올바르게 작동합니다. Chrome, Firefox, Opera 및 Edge는 모두 버그가 있습니다. 그리고 Chrome은 최악 입니다. 일반적인 경우와 정반대가 아닌가?