2012-11-27 4 views
6

CORS (도메인 간 요청)에 적합한 테스트 집합을 설정하려면 스크립트에서 직접 HTTP OPTIONS 메서드를 처리 할 수 ​​있어야합니다. 따라서 OPTIONS 메서드를 감지하고 일부 특정 헤더를 출력하여 그에 따라 반응하는 간단한 PHP 스크립트가 있습니다.PHP가 OPTIONS HTTP 요청을 처리하도록 Apache를 구성하는 방법은 무엇입니까?

PHP 쪽은 문제가되지 않습니다. GET/POST/HEAD/PUT/등을 발행 할 때 컬을 사용한다면. 그들은 모두 스크립트에 가서 요청을 처리하고 명확하게 처리합니다. 그러나 OPTIONS 요청을 발행하면 스크립트에 도달하지 못합니다. Apache는이 자원에 적합하다고 생각하는 메소드 세트를 즉시 응답합니다. 스크립트가 실행되지 않았다는 것을 알 수 있습니다 (로깅이 없으며 출력 결과가 응답을하지 못합니다).

나는 아파치 설정을 해봤지만 적용 할 수있는 .htaccess가 없다는 것을 확인했다. 나는 Limit/LimitExcept 지시어 같은 것들을 수정했다. 그러나 나는 그것을 바꿀 수 없다. 그것의 행동. 나는 또한 젊은 시절에 도움이 될 수있는 기술에 대한 정보를 찾으려고 노력했다. NPH (non-parsed headers) 스크립트. 하지만 분명히 지금은 사라졌습니다 (적어도 나는 그것에 대해 어떤 최근 정보도 찾을 수 없습니다).

질문 : 아파치의 설정을 수정하여 스크립트가 옵션을 처리하도록하려면 어떻게해야합니까?

+0

LIMIT이 없거나 OPTIONS에 대해 특정 처리기를 사용하도록 설정된 경우에만 작동합니다. 그러나 a) 우리는 .conf 파일을 볼 필요가 있고, 둘째는 서버 오류입니다. 마이그레이션을 권장하지만 그 동안 .conf 파일을 추가하십시오. – Robbie

+0

.conf를 포함 시켰을 지 모르지만 많은 일을해야하는 비좁은 구성입니다 (테스트에 많은 구성 차이가 필요합니다). 나의 다음 단계는 그것이 작동 할 때까지 그것을 이등분하는 것이지만, 나는 작은 일이 아니기 때문에 그것을하기 전에 리드를 기대하고 있었다. –

답변

3

방금 ​​PHP (5.3, Apache 2.2)를 테스트했으며 여전히 작동합니다 (잠시 동안 사용함). 옵션이 보내지고 예상대로 $ _SERVER 배열에 나타납니다

목표는 설정을 다시 기본 (작동 함)으로 설정 한 다음 필요한 다른 옵션으로 구성 파일을 다시 작성하는 것입니다.

그렇지 않으면 .conf 파일을 보지 않아도 블라인드가 날아갑니다. 그래서 여기에서 찾아야 할 것이 있습니다.

  1. 제한 지침. 거기에 체크했는데 디버깅하려면 모든 참조를 제거하십시오. vhosts뿐만 아니라 디렉토리에 포함 된 것들은 개별적으로 변경할 수 있습니다. RequestHeader 또는 REQUESTHEADER를 기반으로 리디렉션 또는 기타 조건
  2. 확인의 .conf 및 htaccess로 모두
  3. [나 '(검색 및 분석 않음) -
  4. 는 LimitExcept에 대한 동일 (다만 그들 모두를 제거 당신은 당신이 시도했다) THE_REQUEST을 확인하는 것에 대해 지금 막 읽은 적이 있지만 그 전에는 들어 본 적이 없습니다. 체크 가치가 있습니까?]
  5. 마지막으로 OPTIONS에 지정된 특정 처리기 (예 : Script OPTIONS /cgi-bin/optionshandler)가없고 PHP 처리기가 GET 및 POST 만 처리하도록 지정되어 있는지 확인하십시오. 다시 가상 호스트와 디렉토리를 기억하고 .htaccess를 개별적으로 변경할 수 있으므로 모두 확인하십시오.

내가 생각할 수있는 전부입니다. 그렇지 않으면, 내가 제안한 것처럼 처음부터 시작하고 (작동) 작동하지 않을 때까지 모든 것을 쌓아 라.

+0

고대 게시물이지만 최근 문제를 조사 할 때 가장 유익한 게시물입니다. 결국 내 문제는 mod-php5보다는 libapache2-mod-php5filter를 실행하고 있다는 것이 었습니다. (이유는 모르겠다. 오래 전에 설치했다.) php5filter는 PHP에 OPTIONS를 전달하지 않습니다. mod-php5로 전환하면 문제가 해결되었습니다. – Fanjita

관련 문제