urllib2를 사용하여 Python 2.7.3을 사용하여 http 게시 요청을하고 있습니다. 내 요청에 HTTPError 예외가 반환됩니다 (HTTP 오류 502 : 프록시 오류). 찰스와 메시지 트래픽을 보면 이상한 리디렉션 위치로 인해 urllib2에서 프록시 오류가 발생합니다.
, 나는 다음을 참조 일어나고있다 :- 내가
- 을 urllib2를 사용 (HTTP/1.1을 /index.asp?action=login POST)에 HTTP 요청을 보내 원격 서버가 상태 303과 위치 헤더로 답장합니다 ../index.asp?action=news
- urllib2는 get 요청을 다시 전송합니다. (GET /../index.asp?action=news HTTP/1.1)
- 원격 서버가 상태 502 (프록시 오류)로 응답 함 "DNS 조회 실패가 : 10.0.0.30:80index.asp"0
502 응답은 응답 본문이 포함되어 의미하는 (조작 된 URL을 주목하라)
그래서 나는이을하는 프록시 서버에 원격 서버의 네트워크가 요청에 "/../index.asp"URL을보고 잘못된 URL로 요청을 전송하여 잘못 해석합니다.
브라우저 (Chrome)에서 동일한 요청을하면 재 시도가 GET /index.asp?action=news로 전송됩니다. 따라서 Chrome은 URL에서 "/ .."을 제거하고 원격 서버는 유효한 응답으로 응답합니다.
이것은 urllib2 버그입니까? 재 시도가 URL의 "/ .."을 무시하도록 할 수있는 것이 있습니까? 아니면이 문제를 해결할 다른 방법이 있습니까? 그것이 urllib2 버그일지도 모른다고 생각하면서 urllib2를 요청으로 바꾸었지만 요청은 동일한 결과를 만들어 냈습니다. 물론 요청이 urllib2에서 작성되기 때문일 수 있습니다.
도움 주셔서 감사합니다.
Chrome에서 시도 할 때 위치 헤더는'../ index.asp? action = news'입니까? –
나는 이것이 잘못된 위치라고 믿습니다.이 경우 서버 구성의 버그입니다. 그렇다면 크롬과 다른 많은 브라우저가이 버그를 해결한다고해서 urllib2가 버그가 없다는 것을 의미하지는 않습니다. – abarnert