2013-03-18 2 views
1

저는 매우 간단한 WEBrickProxy (WEBrick 1.3.1, Ruby 1.9.3)를 사용하고 있습니다. 여기Webrick 프록시 + cURL이 잘못된 요청을 반환합니다

require 'webrick' 
require 'webrick/httpproxy' 

server = WEBrick::HTTPProxyServer.new(:BindAddress => "localhost", :Port => 8888) 
trap('INT') { server.shutdown } 
server.start 

그리고 컬 명령

curl --proxy localhost:8888 http://www.google.de -v 

하지만 curl 명령은 항상 잘못된 요청 반환 : 여기에 프록시는 내 맥 OS X 10.8에

* About to connect() to proxy localhost port 8888 (#0) 
* Trying ::1... 
* connected 
* Connected to localhost (::1) port 8888 (#0) 
> GET http://www.google.de HTTP/1.1 
> User-Agent: curl/7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5 
> Host: www.google.de 
> Accept: */* 
> Proxy-Connection: Keep-Alive 
> 
< HTTP/1.1 400 Bad Request 
< Content-Type: text/html; charset=ISO-8859-1 
< Server: WEBrick/1.3.1 (Ruby/1.9.3/2012-10-12) 
< Date: Mon, 18 Mar 2013 13:44:27 GMT 
< Content-Length: 295 
< Connection: close 
< 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN"> 
<HTML> 
    <HEAD><TITLE>Bad Request</TITLE></HEAD> 
    <BODY> 
    <H1>Bad Request</H1> 
    bad URI `http://www.google.de'. 
    <HR> 
    <ADDRESS> 
    WEBrick/1.3.1 (Ruby/1.9.3/2012-10-12) at 
    23tuxmb.local:8888 
    </ADDRESS> 
    </BODY> 
</HTML> 
* Closing connection #0 

curl --version 반환

curl 7.24.0 (x86_64-apple-darwin12.0) libcurl/7.24.0 OpenSSL/0.9.8r zlib/1.2.5 
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp 
Features: AsynchDNS GSS-Negotiate IPv6 Largefile NTLM NTLM_WB SSL libz 

오류가 어디에 있는지 알 수 없으며 몇 주 전에 코드 조각을 사용해 보았습니다.

괴상한 점은 내 컴퓨터가 전역으로 해당 프록시 (System Settings -> Network -> Advanced -> Proxies -> Web Proxy)를 사용하도록 구성하면 모든 것이 작동한다는 것입니다. Chrome 또는 다른 애플리케이션의 요청은 프록시를 통해 전달됩니다 (프록시의 터미널 로그에 표시됨).

누구든지이 문제를 재현 할 수 있습니까? 그것은 컬 버그입니까? 아니면 Webrick 관련 문제입니까?

편집

더 자세한 정보는 : 컬이 연결을 시도 루비 스크립트 자체의 출력은

[2013-03-18 17:16:32] ERROR bad URI `http://www.amazon.de'. 
localhost - - [18/Mar/2013:17:16:32 CET] "GET http://www.amazon.de HTTP/1.1" 400 286 
- -> http://www.amazon.de 

들으입니다!

+0

'OS X 10.7.4'과'curl 7.21.4' – Viren

+0

에 대한 매력으로 저를 위해 노력했습니다. 이제는 OS X 10.8.2와 curl 7.24.0과 다른 컴퓨터에서 다른 인터넷에서 시도해 보았습니다. 연결 (휴대 전화를 사용하기 전), 동일한 결과. 다른 아이디어? – 23tux

+0

나는 또한'curl 7.21.6', 동일한 문제를 시도했습니다 – 23tux

답변

2

요청한 URL에 후행 슬래시를 추가하면 작동합니까? 이 같은 즉 명령 행 :

컬 --proxy 로컬 호스트 : 8888 http://www.google.de/ -v

(이것은 컬 버그 bug #1206에보고하고, 자식 및 다음 버전에서 해결 ...)

+1

당신은 굉장합니다! 고마워, 내 문제가 해결 됐어. 어쩌면 나는 두 달 전에 매우 다른 컬 버전을 사용했을 것입니다! – 23tux