2011-04-21 4 views
0

내 코드 URL이 외부 프로세스를 통해 제공 탐색을 시도하지만, 최근에 나는 경우에 URL 내가 URL을 성공적으로 브라우저에서 탐색 도착한다 무엇을 발견 http://ask.bitauto.com/TreeAsk/index.aspxHttpWebRequest를

재 했다 HttpWebRequest를에서 버그를 발견 실패 리디렉션 MaxRedirect에 실패 사용 AutoRedirects의 경우, .Refer가 할당 된 경우에도 (예외를 제공하지 않고) HTTP-리퍼러가 지정되어 있지만 닷넷의 WebRequest 클래스가 실패 할 경우 "MSDN

에 따르면 예외

에 도달 AllowAutoRedirect하는 경우 속성이 true이면 Referer 속성은 요청이 다른 사이트로 리디렉션 될 때 자동으로 설정됩니다. "

같은 사이트에서이 평균 리디렉션은 다르게 처리됩니다. 누군가이 문제를 해결하는 방법을 알고 있다면 알려주십시오.

덕분에 사전

답변

1

에 나는이 문제의 뿌리가 http://ask.bitauto.com/TreeAsk/index.aspx 내 생각합니다.

이 대답에 링크 (따라서 유래하는 리퍼러를 가진) 결과에 따라 :

HTTP/1.1 302 Found 
Date: Thu, 21 Apr 2011 07:28:03 GMT 
Server: Microsoft-IIS/6.0 
X-Powered-By: ASP.NET 
X-AspNet-Version: 2.0.50727 
Location: 
Cache-Control: private 
Content-Type: text/html; charset=utf-8 
Content-Length: 117 

공지 빈 Location 헤더 - 서버의 응답 리디렉션 ... 아무것도이다.

편집 : 그것은 당신이 리퍼러 또는 non-ask.bitauto.com 리퍼러가없는 경우에만 표시됩니다 빈 리디렉션 페이지처럼 보인다

. 참조 URL로 대상 URL을 설정하면 200 OK 답변이됩니다.

편집 2 :

빈 위치 헤더 행동이 RFC2616에 따라되지 않으며, 그것은 다른 웹 에이전트처럼 보인다는 different way에 반응.

귀하의 요청에 HTTPWebRequest.Referrer을 지정하는 것이 가장 확실한 해결책이라고 생각합니다.

+0

HTTP 프로토콜 비어있는 위치 헤더에 따르면 HTTPWebRequest는 동일한 페이지로 리디렉션되지만이 경우 Referer Header가 설정되지 않는다는 것을 의미하므로이 상황은 서버에서 동일한 응답을 반복적으로 발생시켜 결과를 초래합니다. MaximumAutomaticRedirections. – CodeWrite

+0

리디렉션의 동작을 지원하는 출처를 찾지 못했지만이를 반영하기 위해 답변을 편집했습니다. –

+0

당신이 옳았다 고 생각합니다. HTTPWebRequest의 AutoRedirect 속성을 사용하여 문제가 발생했습니다. MaximumAutomaticRedirections가 동작하여 HTTPWebRequest가 예기치 않게되고 프로그램이 중단 된 후 Referer를 사용하여 수동 리디렉션을 수행했습니다. 당신의 충고에 따라 나는 AutomaticRedirects와 그 작동 원리를 해제했다. 조언 해 주셔서 감사합니다. – CodeWrite

관련 문제