2011-03-15 3 views
2

나는 이런 상태입니다. 항상 평범한 소켓을 사용하는 C/C++ 프로그램에서 HTTP GET 쿼리를 만들 때 나는 301 Moved Permanent를 얻는다. 일반적으로 libcURL을 사용 하겠지만이 경우 다른 라이브러리를 추가하고 싶지 않습니다. 하나의 고정 서버에서 하나의 플랫 ID 파일을 다운로드하면됩니다.C++ HTTP는 항상 소켓을 사용하여 301을 사용합니다.

이 내 현재 쿼리입니다 : 나는 모든 것을 시도하고, 모든 것이 그냥 재미 메시지와 함께 대답됩니다

GET /game/getversion.jsp?user=nightcracker&password=yeahright&version=12 HTTP/1.1\r\n 
Connection: close\r\n 
Host: www.minecraft.net\r\n 
Accept-Encoding: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n 
\r\n 

:

HTTP/1.1 301 Moved Permanently 
Server: nginx/0.6.32 
Date: Tue, 15 Mar 2011 02:18:11 GMT 
Content-Type: text/html 
Content-Length: 185 
Connection: close 
Location: http://www.minecraft.net/game/getversion.jsp?user=nightcracker&password=yeahright&version=12 

<html> 
<head><title>301 Moved Permanently</title></head> 
<body bgcolor="white"> 
<center><h1>301 Moved Permanently</h1></center> 
<hr><center>nginx/0.6.32</center> 
</body> 
</html> 

내가 전에이 문제가 기억하고 내가 전에 ragequitted. 이제이 망할 놈을 고치고 싶습니다. 그래서 말해 봐요. 왜 모든 HTTP 쿼리가 항상 301을 돌려 주죠?

답변

3

좋아요, Accept-Encoding의 문제 외에도 쿼리가 괜찮 았습니다. 문제는 내 소켓 코드에서 "minecraft.net"대신 "minecraft.net"으로 해결되었다는 것입니다. RAAAAH. 결정된.

0

리다이렉트 된 URI가 원래 GET 요청 URI와 같아 보이지 않으므로 분명히 잘못 된 것을 볼 수 없기 때문에 명령 행 컬을 다운로드하고 동일한 대상에 대해 세부 정보 표시 모드로 실행하는 것이 좋습니다. 아마 그것은 올바른 방향으로 당신을 가리킬 수있는 출력물을 보여줄 것입니다. 이것이 잘못 설정된 서버이거나 잘못 작성된 JSP 일 가능성이 있으므로이를 명심하십시오.

0

이 당신이 마인 크래프트 서버에서이 문제가 있지만

Accept-Encoding: text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2\r\n 

도대체 그 무엇 (I 계정이없는) 인 경우 나도 몰라? 요청에 갈 수도 헤더 필드는

  • Accept: MIME 타입을 포함한다 (예를 들어, 당신이 무엇을)
  • Accept-Charset: 캐릭터 세트 (예 : utf-8)
  • Accept-Encoding: 인코딩 (예 : gzip)
  • Accept-Language: 언어 (예 : en)

당신은 그들을 섞어 놓은 것 같습니다.

+0

Accept-Encoding을 Accept로 변경하면 올바르지 않지만 아무 것도 수정하지 않습니다. – orlp

0

글쎄, 서버가 클라이언트를 다른 위치로 리디렉션하고 있습니다. 3xx 레슨의 "위치"헤더에 다시 오는 URL에 또 다른 요청을 보내면됩니다.

OOP는 리디렉션 위치가 원래 URI와 동일 함을 인식했습니다. 브라우저에서이 URL을 사용할 수 있습니까? 그렇다면 브라우저가 보내는 것과 동일한 User-Agent를 포함하는 요청에 User-Agent 헤더를 추가해보십시오.

관련 문제