web-dev-qa-db-ja.com

GETリクエストの本文のGETリクエスト

私はいくつかの任意のクレイジーなテストでいくつかのAPIエンドポイントをテストしています:

GET /products/items HTTP/1.1
Host: api.companysite.com
Content-Type: application/xml
User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/535.12 (KHTML, like Gecko) Maxthon/3.0 Chrome/26.0.1410.43 Safari/535.12
Connection: keep-alive
Content-Length: 47

GET /robots.txt HTTP/1.1
Host: app.companysite.com

GET/robots HTTP/1.1部分がGET/products/itemsリクエストの本文にある場合、私は最もクレイジーな応答を受け取りました:

HTTP/1.1 400 Bad Request
Access-Control-Allow-Origin: *
Cache-Control: no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0
Content-Type: application/json; charset=UTF-8
Expires: 0
Last-Modified: 2019-09-19 07:19:08.998002474 +0000 UTC
Pragma: no-cache
Strict-Transport-Security: max-age=31536000;
Vary: Origin
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Content-Length: 71
Date: Thu, 19 Sep 2019 07:19:09 GMT
Connection: keep-alive

{"status":"ERROR","message":"No Authorization header","code":"AUTH01"}
HTTP/1.1 200 OK
Content-Type: text/plain
Last-Modified: Thu, 12 Sep 2019 09:37:21 GMT
ETag: "5d7a11d1-36"
X-Frame-Options: DENY
Strict-Transport-Security: max-age=31536000; includeSubDomains
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
CF-Visitor: {scheme:https}
Cache-Control: max-age=1066261
Expires: Tue, 01 Oct 2019 15:30:10 GMT
Date: Thu, 19 Sep 2019 07:19:09 GMT
Content-Length: 54
Connection: keep-alive

User-agent: *
Sitemap: https://app.companysite.com/sitemap.xml

GETリクエストの本文が原因で400応答コードが返されることはわかっていますが、この応答の2番目の部分はどうなりますか? 1つのGETリクエストを使用して2つの異なるリクエストを送信できるのはなぜですか?これはリクエストの密輸攻撃ではなく、CL.TE、TE.CE、TE.TEヘッダーはなく、明らかにPOSTリクエストはありません。何が起こっているのでしょうか。思う?

6
the_me

同じTCPセグメントに複数のHTTPリクエストがある場合、これは一般に「HTTPパイプライン」と呼ばれます

パイプラインを使用すると、クライアント側からの1つのリクエストに複数のメソッドを配置できます。 https://en.wikipedia.org/wiki/HTTP_pipelining

5
camp0