2012-04-20 1 views
0

AJAX (jQuery 사용)를 통해 더 자세한 설명 메시지를 반환하기 위해 사용자 정의 HTTP 1.0 상태 코드를 설정하려고합니다. 아파치 2.2.15 사용하여 내 개발 환경에서 예상하지만 LiteSpeed를 5.5를 실행하는 생산 웹 서버에서 작동하지 않기 때문에이 작동PHP로 LiteSpeed에서 사용자 정의 HTTP 응답 헤더 설정하기

header('HTTP/1.0 909 Hello World'); 
exit; 

: PHP에서

내가 좋아하는 뭔가가있다. 대신 LiteSpeed는 200 OK을 반환합니다. 이 사용

:

header('HTTP/1.0 404 Hello World'); 
exit; 

아파치는 위의 텍스트로 404을 반환합니다. LiteSpeed는 사용자 정의 텍스트를 기본 '찾을 수 없음'으로 바꿉니다.

어떻게 LiteSpeed에서이 기능을 재정 의하여 Apache와 동일한 방식으로 작동하게 할 수 있습니까? 필자는 필자가 필적 할만한 웹 서버라고 생각합니다.

아이디어가 있으시면 알려주세요.

-P.

답변

0

먼저 HTTP 1.0과 1.1이 아닌 이유는 무엇입니까?

둘째, HTTP 사양에 정의되지 않은 작업을 수행하려고합니다. LiteSpeed는 전송 요청 메시지를 확인하고 일부 기본값으로 인식 할 수없는 값을 대체합니다.

HTTP가 비정상적인 방식으로 작동하도록해서는 안됩니다. HTTP를 종료하자마자 HTTP가 중단됩니다. 사양은 서로 다른 사람들이 서로 다른 시간에 구현 한 소프트웨어가 상호 운용 될 수 있는지 확인하고, 스펙을 따르지 않으면 어떻게 작동해야하는지 완전히 정의되지 않았습니다.

아파치가 통과하지 못하는 헤더를 허용하는 아파치는 완벽하게 허용되는 동작이며, LiteSpeed의 통과를 거부하는 동작도 마찬가지입니다. 당신의 코에서 악마를 날려 버리는 것은 서버가이 경우에 할 수있는 일이기도합니다. 클라이언트가 인식하지 못하는 HTTP 응답 코드로 무엇을할까요?

헤더에 추가 정보를 보내야하는 경우 새 헤더를 추가하는 것이 좋습니다. 다음과 같이해야합니다.

header ('X-My-App-Header: Hello World!'); 
+0

모든 유효한 점이 있으며 더 나은 교차 플랫폼 호환성을 위해서는 'X-Custom-Error : Hello World'를 사용해야합니다. 사용자가 어떤 작업을 수행했는지에 대한 응답으로 응답을 해석/처리하여보다 기술적 인 오류 메시지를 전달하므로 실제로 문제가되지 않습니다. 그럼에도 불구하고 나는 이것이 모범 사례가 아닐 수도 있다는 점을 감안하여 위의 목표를 달성하기위한 더 나은 대안을 환영 할 것입니다. – paperclip

+1

글쎄, 내가 제안한 것처럼, HTTP 스펙이 리턴 할 수있는 것 이상의 정보를 전달하기 위해 사용자 정의 헤더 (X-로 시작하는 이름의 헤더)를 첨부 할 수있다. HTTP에는 매우 풍부한 미리 정의 된 상태 코드 세트가 포함되어 있으므로 자세한 정보가 포함 된 X- 헤더와 함께 상황에 가장 적합한 유효한 HTTP 상태 코드를 반환하는 것이 좋습니다. – GordonM