1

http の内部で何が起こっているかをテストしたいので、次のようにしました。

socket = TCPSocket.open('localhost',4567)

request = "GET / HTTP/1.1\r\nHost:localhost\r\n\r\n"

socket.print request

しかし、シナトラは私にエラーを出します:

[2012-08-01 14:04:11] ERROR bad Request-Line `'.
ec2-184-169-164-27.us-west-1.compute.amazonaws.com - - [01/Aug/2012:14:04:11 UTC] "" 400 313
- -> 

何か案が?

4

1 に答える 1

0

これはWebサーバーに依存する可能性があり、一部のWebサーバーにはいくつかのヘッダーが必要です(同じ問題があり、Acceptヘッダーを追加して解決しました)。また、一部のファイアウォールにはUser-Agentが必要なので、これを試してください:

socket.puts "GET / HTTP/1.1\r\n"
socket.puts "Host: localhost\r\n"
socket.puts "Accept: text/html,*/*\r\n"
socket.puts "User-Agent: Mozilla/4.0 (Windows; MSIE 6.0; Windows NT 6.0)\r\n"
socket.puts "Connection: close\r\n"
socket.puts "\r\n"

:の後のスペースについても注意してください(まれです) が、Web サーバーで必要になる場合があります。

また、プットを使用する方が印刷よりも優れている場合があります。(私の意見では!)

于 2012-08-11T20:47:34.057 に答える