2014-09-24 3 views
1

콘텐츠 (URL이 아닌)로 HTML을 제공하는 CGI python 프로그램이 있습니다. 흐름은 다음과 같습니다CGI가 HTML 렌더링을 제공하지 않습니다.

1. open http://jioworld.jioconnect.com/cgi-bin/loginpp.py 
2. you get HTML form (since you have not yet login) 
3. enter some dummy user and password and submit 
4. you stay on same page after submit even though response html is served. So the page (response) is not rendered by browser but cookie is set 
5. reload the page (hit refresh/reload) 
6. page is rendered 

내 문제는 : 페이지가 4 단계에서 렌더링되지 않고 다시로드에 나는 4 단계는 페이지를 렌더링 할 것으로 예상

6 단계에서 렌더링 이유.

나는 stylesheet, javascript, images 등의 모든 링크에 대해 상대적 URL, 절대 URL로 실험했지만 절대적인 것만 다른 것보다 잘 작동하는 것처럼 보입니다. 이것은 /에 설정된 html의 BASE 태그를 시도했기 때문에 다시 문제가되는데 작동하지 않습니다. 이미지 등은/images 대신 cgi-bin/images로 해석됩니다. 그래서 BASE 태그를 무시할 수 있도록 모든 URL을 BASE로 설정했습니다. 그런 다음 나는 호스트에 대한 전체 URL을 기본 태그로 설정했다.

답변

0

이미지 등은/images 대신 cgi-bin/images로 해석됩니다.

쉽게 수정할 수 있습니다. 서버가 스크립트를 실행할 때 스크립트의 현재 작업 디렉토리 (CWD)를 cgi-bin으로 설정합니다. 서버를 변경하는 것은 아파치 설정이 의심 스럽지만 서버를 사용하는 것이 일반적인 방식이라고 생각합니다.

저는 아파치를 몇 년 동안 사용해 본 적이 없기 때문에 조금 녹슬었지만 가끔씩 몇 가지 기본적인 웹 서버를 가지고 놀았습니다. 이러한 서버 중 하나는 다른 서버의 CWD에서 시작, CGI-빈에서 스크립트를 시작, 그래서 난 내 CGI 스크립트에 넣고 :

#Change to parent dir if we're in cgi-bin, 
if os.path.basename(os.getcwd()) == 'cgi-bin': 
    os.chdir('../') 

하지만 단계가 문제를 해결하는 방법을 잘 모르겠어요 4 목록에.

일반적으로, 당신은 url 페이지의 URL입니다 브라우저,이

'<meta http-equiv="REFRESH" content="0;url=%s">' % href

같은 일부 콘텐츠를 보낼 것입니다. 하지만 그게 당신을 위해 작동하는지 모르겠습니다.

아마도 CGI 스크립트를 볼 수 있다면 문제를 설명하는 데 도움이 될 것입니다.

관련 문제