.htaccess의 헤더 세트 Access-Control-Allow-Origin이 작동하지 않습니다.
내 .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
});
이 기사를 참조하십시오.
.htaccess의 헤더 세트 Access-Control-Allow-Origin이 작동하지 않습니다.
다음에주의하십시오.
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>
Be careful on : Header add Access-Control-Allow-Origin "*" This is not judicious at all to grant access to everybody. I think you should user:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "http://example.com"
</IfModule>
I +1'd Miro's answer for the link to the header-checker site http://www.webconfs.com/http-header-check.php. It pops up an obnoxious ad every time you use it, but it is, nevertheless, very useful for verifying the presence of the Access-Control-Allow-Origin header.
I'm reading a .json file from the javascript on my web page. I found that adding the following to my .htaccess file fixed the problem when viewing my web page in IE 11 (version 11.447.14393.0):
<FilesMatch "\.(json)$">
<IfModule mod_headers.c>
Header set Access-Control-Allow-Origin "*"
</IfModule>
</FilesMatch>
I also added the following to /etc/httpd.conf (Apache's configuration file):
AllowOverride All
The header-checker site verified that the Access-Control-Allow-Origin header is now being sent (thanks, Miro!).
However, Firefox 50.0.2, Opera 41.0.2353.69, and Edge 38.14393.0.0 all fetch the file anyhow, even without the Access-Control-Allow-Origin header. (Note: they might be checking IP addresses, since the two domains I was using are both hosted on the same server, at the same IPv4 address.)
However, Chrome 54.0.2840.99 m (64-bit) ignores the Access-Control-Allow-Origin header and fails anyhow, erroneously reporting:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin '{mydomain}' is therefore not allowed access.
I think this has got to be some sort of "first." IE is working correctly; Chrome, Firefox, Opera and Edge are all buggy; and Chrome is the worst. Isn't that the exact opposite of the usual case?
After spending half a day with nothing working. Using a header check service though everything was working. The firewall at work was stripping them
try this:
<IfModule mod_headers.c>
Header set Access-Control-Allow-Credentials true
Header set Access-Control-Allow-Origin "your domain"
Header set Access-Control-Allow-Headers "X-Requested-With"
</IfModule>
It's preferable to allow a list of know trusted host.
If anyone else is trying this, the most upvoted answer should work. However, if you are having issues it could be possible the browser has cached the REQUEST. To confirm append a query string.
'IT story' 카테고리의 다른 글
ASP.NET MVC 모델 대 ViewModel (0) | 2020.09.11 |
---|---|
반복기의 개수 / 길이 / 크기를 얻는 가장 좋은 방법은 무엇입니까? (0) | 2020.09.11 |
Intent를 처리 할 활동이 없습니다. android.intent.action.VIEW (0) | 2020.09.10 |
Python에서 하위 프로세스로 출력을 리디렉션하는 방법은 무엇입니까? (0) | 2020.09.10 |
Kubernetes 대시 보드에 로그인하는 방법은 무엇입니까? (0) | 2020.09.10 |