아파치가 cgi 스크립트에서 클라이언트로 Location 헤더를 다시 전달하지 않는 이유


0

기존의 cgi 웹 앱이 있지만 정상적으로 작동했지만 동작이 변경되었습니다.

cgi 프로그램 중 하나 (특정 조건 하에서)는 Location 헤더를 반환하여 경로 재 지정을 유발합니다.

Location 헤더는 웹 브라우저에 도달하지 않습니다. 대신 Apache는 Location 헤더가 리디렉션되는 페이지의 내용을 반환하는 것 같습니다.

불행히도 해당 페이지에는 Location 헤더 내부에 쿼리 문자열을 사용하는 javascript가 포함되어 있지만 브라우저는 여전히 위치가 원래 cgi 스크립트라고 생각하기 때문에 쿼리 문자열이 비어 있습니다.

왜 행동이 바뀌었고, 그것을 막기 위해 어떻게해야합니까?


분명히 핵심은 Location헤더 에 절대 URL을 지정했는지 여부 입니다.
다니엘 B

아하! 나는 그것을 몰랐다. 귀하의 의견을 답변으로 보내 주시면 기꺼이 답변 해 드리겠습니다.
Nikki Locke

답변:


1

이 답변 에 따르면 CGI는 내부 및 외부의 두 가지 유형의 리디렉션을 지정합니다.

내부 리디렉션 (브라우저에서는 보이지 않음)은 헤더에 구성표 및 호스트 ( otherpage.html또는 등 /index.html)가 없는 URL을 지정할 때 사용됩니다 Location.

브라우저에서 수행하는 외부 리디렉션 은 절대 URL (예 :)을 지정할 때만 사용됩니다 http://www.example.com/some/other/page. 절대 URL 체계 (예 :)로 시작 해야합니다http .

RFC 3875 에는 관련 문서가 포함되어 있습니다.

Location 헤더 필드는 스크립트가 실제 문서가 아닌 문서에 대한 참조를 반환하도록 서버에 지정하는 데 사용됩니다 (섹션 6.2.3 및 6.2.4 참조). 클라이언트가 참조 된 문서를 페치해야 함을 표시하는 절대 URI (옵션) 또는 서버가 참조 된 문서를 페치하고 리턴해야 함을 표시하는 로컬 URI 경로 (선택적으로 조회 문자열 포함)입니다. 응답으로 클라이언트에.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.