2012-09-26 5 views
0

들어오는 연결에 포트 80 (포트 80이 다른 서비스에서 사용되지 않음)을 수신하는 TCP 프록시를 만들었습니다. 리스너 소켓에 대해 IpAddress 으로 "Localhost"또는 "127.0.0.1"을 사용하면 프록시가 POST 요청을 수신 할 수 있습니다. 연결을 수신 할 때 내가 대체 그러나 내 machine.The 프록시의 IP (191.151.43.22)과 '로컬 호스트'TCP 소켓 리스너 - POST에서 GET으로 요청이 변경 되었습니까?

Socket listner = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
IPEndPoint localEndpoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 80); 
listner.Bind(localEndpoint); 
listner.Listen(); 

Socket listner = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); 
IPEndPoint localEndpoint = new IPEndPoint(IPAddress.Parse("191.151.43.22"), 80); 
listner.Bind(localEndpoint); 
listner.Listen(); 

클라이언트 요청 "요청을 GET"으로 클라이언트 요청을 수신 내 컴퓨터의 IP (191.151.43.22)를 사용하여 연결을 수신 할 때 로컬 호스트/127.0.0.1

POST /?toke=abc455/../Control.html?s=783&i=0&t=134 HTTP/1.1 

    Host: localhost:58888 
    Connection: keep-alive 
    Content-Length: 0 
    Origin: http://localhost:58888 
    User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) C 
    hrome/21.0.1180.89 Safari/537.1 
    Content-Type: text/plain;charset=UTF-8 
    Accept: */* 
    Referer: http://localhost:58888/?toke=abc455/../Stream.html?s=0&d=%22 
    localhost%22&p=0&t=1348652703126 
    Accept-Encoding: gzip,deflate,sdch 
    Accept-Language: en-US,en;q=0.8 
    Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 
    Cookie: style=null 

클라이언트 요청을 사용하여

GET /?token=abc344/../Stream.html?s=0&d=%22localhost%22&p=0&t=13486531 
37269 HTTP/1.1 
Host: 192.168.53.50 
Connection: keep-alive 
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.1 (KHTML, like Gecko) C 
hrome/21.0.1180.89 Safari/537.1 
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 
Accept-Encoding: gzip,deflate,sdch 
Accept-Language: en-US,en;q=0.8 
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.3 

POST가 시스템의 IP 주소로 작동하지 않지만 IP 대신 'localhost'가 사용되는 경우 작동하는 이유는 무엇입니까?

+0

요청 정보 자체만으로는 다른 경로 인 Control.html과 Stream.html을 제외하고는 그다지 알려지지 않습니다. 프록시 구성 질문 인 것처럼 들리지만이 경우에는 SO에 속하지 않는 것 같습니다. –

답변

0

아마도 귀하의 HTTP 요청이 프록시 서버에 의해 변경되고 있습니다 (제 생각에는 라우터라고 생각합니다).

그렇다면 프록시 서버 (범인이라고 가정)는 자신이하는 일에 대해 부정확하지 않을 수 있습니다. 요청에 ** POST 데이터가 표시되지 않습니다 ** 따라서 변경 사항은 수신 측에 아무런 영향을 미치지 않아야합니다.

** GET 데이터 (URL에 있음)가 있지만 POST 데이터가 없습니다 (헤더 뒤에 위치 함).