[.htaccess] htaccess 액세스 제어 허용 원본

다른 사이트에 외부 적으로로드되는 스크립트를 작성 중입니다. CSS와 HTML을로드하고 내 서버에서 잘 작동합니다.

그러나 다른 웹 사이트에서 시도하면이 끔찍한 오류가 표시됩니다.

Access-Control-Allow-Origin

여기서 당신은 그것이 완벽하게로드 볼 수 있습니다 : http://tzook.info/bot/

그러나이 다른 웹 사이트에서는 오류가 표시됩니다 :
http://cantloseweight.co/robot/

로딩 스크립트를 jsfiddle에 업로드했습니다 :
http://jsfiddle.net/TL5LK/

나는 htaccess 파일을 다음과 같이 편집하려고 시도했다.

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin *
</IfModule>

또는 이렇게 :

Header set Access-Control-Allow-Origin *

그러나 여전히 작동하지 않습니다.



답변

외부 루트 폴더의 .htaccess에서 이것을 시도하십시오 :

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

그리고 .js 스크립트에만 관련된 경우 위 코드를 다음과 같이 묶어야합니다.

<FilesMatch "\.(js)$">
...
</FilesMatch>


답변

아무도 mod_headers를 활성화 해야한다고 말하지 않으므로 여전히 작동하지 않으면 다음을 시도하십시오.

(다음 팁은 우분투에서 작동하며 다른 배포판에 대해서는 모른다)

당신은로드 모듈의 목록을 확인할 수 있습니다

apache2ctl -M

사용할 수있는 mod_headers를 활성화하기 위해

a2enmod headers

물론 Apache에서 변경된 후에는 다시 시작해야합니다.

/etc/init.d/apache2 restart

그런 다음 사용할 수 있습니다

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

그리고 mod_headers가 활성화되어 있지 않으면이 줄은 아무 것도하지 않습니다. if 절을 건너 뛰고 Header set Access-Control-Allow-Origin "*"구성에 추가 하면 mod_headers가 활성화되지 않은 경우 시작 중에 오류가 발생합니다.


답변

내 경험에서;

그것이 내부에서 작동하지 않으면이 작업을 php수행하면 .htaccess나를 위해 일했습니다.

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin http://www.vknyvz.com
    Header set Access-Control-Allow-Credentials true
</IfModule>
  • 자격 증명은 ajax 요청 매개 변수에 따라 true 또는 false가 될 수 있습니다

답변

.htaccess글꼴에 액세스하는 데 문제가있는 경우 다음 지시문이 있는 파일을 글꼴 폴더에 추가하십시오 . .css 또는 .js 파일 과 함께 사용하도록 쉽게 수정할 수 있습니다 .

<FilesMatch "\.(eot|ttf|otf|woff)$">
    Header set Access-Control-Allow-Origin "*"
</FilesMatch>


답변

다른 답변은 저에게 효과가 없었습니다.

1) 헤더 모드를 활성화하십시오 :

sudo a2enmod headers

2) /etc/apache2/mods-enabled/headers.conf파일을 작성 하고 다음을 삽입하십시오.

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

3) 서버를 다시 시작하십시오.

sudo service apache2 restart


답변

Zend Framework 2.0 에서이 문제가 발생했습니다. 두 가지 방법으로 .htaccess 또는 php 헤더로 해결할 수 있습니다. .htaccess를 선호하므로 .htaccess를 다음에서 수정했습니다.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

RewriteEngine On

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

그리고 그것은 작동하기 시작합니다


답변

BTW : .htaccess 구성은 API를 호스팅하는 서버에서 수행해야합니다. 예를 들어 x.com 도메인에서 AngularJS 앱을 만들고 y.com에서 Rest API를 만들려면 x가 아닌 y.com의 루트 폴더에있는 .htaccess 파일에서 Access-Control-Allow-Origin “*”을 설정해야합니다. .com 🙂

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

또한 Lukas가 언급했듯이 Apache를 사용하는 경우 mod_headers를 활성화했는지 확인하십시오