2014-01-21 4 views
6

아파치 서버로 작업하고 있으며 조건부로 헤더를 추가하고 싶습니다.조건부로 Apache 헤더 설정

URI가 특정 정규식과 일치하면 Access-Control-Allow-Origin: * 헤더를 추가하고 싶습니다. 이것을하는 좋은 방법은 무엇입니까? 내가 지금까지 시도했습니다 무엇

:

  1. 나는 apr_table_add(rq->headers_out, "Access-Control-Allow-Origin", "*")를 사용하여 요청 처리기에 의해 호출 코드를 추가했습니다. 그러나 헤더가 Content-Type: application/x-javascript으로 설정 될 때마다 응답을 보내기 전에 Apache가 헤더를 제거하는 것처럼 보입니다. 이것이 잘못된 방법일까요? 왜 아파치는 헤더를 제거 할까?

  2. mod_headers 제안을 들었습니다. mod_headers는 요청 URI와 일치하는 정규 표현식을 기반으로 헤더를 배치 할 수 있습니까?

+0

당신은 당신이 도움의를 얻을 말 했는가, 문제를 해결 한 방법 몇몇 동료들? @akond 작품에 대한 답변이나 답변을 게시 할 수 있습니까? – Robert

+0

@akond의 답변이 효과가있었습니다. – dinosaur

답변

11
SetEnvIf Request_URI somepartofurl SIGN 
Header always add "Access-Control-Allow-Origin" "*" env=SIGN 

하지만이 구성에있는 경우에만 작동합니다. 그것을 .htaccess에 두는 것은 도움이되지 않습니다.

+0

이 코드의 기능 (구문, 작동 방식)을 설명해 주시겠습니까? "구성에 있습니다"라고 말하면 httpd.conf에서 의미가 있습니까? 내 모듈에 하나 있다고 생각하지 않습니다. 내가 어떻게 세울거야? – dinosaur

+0

동료들의 도움으로 그것을 알아 냈습니다. 고맙습니다! – dinosaur

+0

SetEnvIf 및 Header 지시문은 모두 구성 파일에만 위치하도록 제한되지 않으며 디렉토리 컨텍스트 및 .htaccess 파일에서도 완벽하게 작동합니다. 허용 된 답변에 언급 된 것과는 반대입니다. – biera

1

이것은 또한 (mod_rewrite를 필요) 작동합니다 :

RewriteRule ^/en/foo.*$ - [ENV=SET_ACAO:true] 
Header set "Access-Control-Allow-Origin" "*" env=SET_ACAO 

^/en/foo.*$ 요청 URL에 대해 일치하는 정규식