2

簡単なはずなのに、お手数をおかけして申し訳ありません。

私はこのHTTP GETリクエストを持っています:

GET /ip HTTP/1.1
Host: httpbin.org
Connection: close
Accept: */*
User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)

ESP8266 経由でこのリクエストを送信すると、404 エラーが返されます。

HTTP/1.1 404 Not Found
Date: Fri, 04 Sep 2015 16:34:46 GMT
Server: Apache
Content-Length: 1363
X-Frame-Options: deny
Connection: close
Content-Type: text/html

しかし、私 (そしてあなた) が行ったとき、http://httpbin.org/ipそれは完全に機能します!

なにが問題ですか?

詳細

Lua でリクエストを作成します。

conn:on("connection", function(conn, payload)
    print('\nConnected')
    req = "GET /ip"
    .." HTTP/1.1\r\n"
    .."Host: httpbin.org\r\n"
    .."Connection: close\r\n"
    .."Accept: */*\r\n"
    .."User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"
    .."\r\n"
    print(req)
    conn:send(req)
end)

そして、私が別のホストを使用する場合(与えられたのはこの例です)、それは機能します:

conn:on("connection", function(conn, payload)
    print('\nConnected')
    conn:send("GET /esp8266/test.php?"
    .."T="..(tmr.now()-Tstart)
    .."&heap="..node.heap()
    .." HTTP/1.1\r\n"
    .."Host: benlo.com\r\n"
    .."Connection: close\r\n"
    .."Accept: */*\r\n"
    .."User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)\r\n"
    .."\r\n")
end)
4

3 に答える 3

2

実際に httpbin.org に接続していますか? それとも別の場所ですか?

telnet に入力してリクエストを発行しようとしたところ、うまくいきました。しかし、応答するサーバーはnginxでしたが、あなたの例はApacheを示しています.

$ telnet httpbin.org 80
Trying 54.175.219.8...
Connected to httpbin.org.
Escape character is '^]'.
GET /ip HTTP/1.1
Host: httpbin.org
Connection: close
Accept: */*
User-Agent: Mozilla/4.0 (compatible; esp8266 Lua; Windows NT 5.1)

HTTP/1.1 200 OK
Server: nginx
Date: Wed, 07 Oct 2015 06:08:40 GMT
Content-Type: application/json
Content-Length: 32
Connection: close
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true

{
  "origin": "124.149.55.34"
}
Connection closed by foreign host.

404 応答を強制するために別の URI を使用して別の要求を試みると、次のように表示されます。

HTTP/1.1 404 NOT FOUND
Server: nginx
Date: Wed, 07 Oct 2015 06:12:21 GMT
Content-Type: text/html
Content-Length: 233
Connection: close
Access-Control-Allow-Origin: *
Access-Control-Allow-Credentials: true

これもまた、あなたが httpbin.org から得たと言った応答のようなものではありません。

于 2015-10-07T06:13:49.553 に答える
0

サーバーが気に入らないのはあなたのリクエストラインです。これは仕事をします:

GET http://httpbin.org/ip HTTP/1.1
Host: httpbin.org
于 2015-09-04T18:51:32.280 に答える