web-dev-qa-db-ja.com

このHTTP POSTリクエストの何が問題になっていますか?

Sulleyファジングフレームワークを使用してサーバーをファジングしようとしています。

Wiresharkで次のストリームを観察します。このエラーはJSON解析の問題について説明していますが、Google ChromeのPostman拡張機能を使用して同じHTTP POSTリクエストを試行すると、成功します。

誰もがこのHTTP POSTリクエストの何が問題になっているのか説明できますか?JSONは有効なようです。

POST /restconf/config HTTP/1.1
Host: 127.0.0.1:8080
Accept: */*
Content-Type: application/yang.data+json
{ "toaster:toaster" : { "toaster:toasterManufacturer" : "Geqq", "toaster:toasterModelNumber" : "asaxc", "toaster:toasterStatus" : "_." }}


HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Content-Type: */*
Transfer-Encoding: chunked
Date: Sat, 07 Jun 2014 05:26:35 GMT
Connection: close

152
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<errors xmlns="urn:ietf:params:xml:ns:yang:ietf-restconf">
    <error>
        <error-type>protocol</error-type>
        <error-tag>malformed-message</error-tag>
        <error-message>Error parsing input: Root element of Json has to be Object</error-message>
    </error>
</errors>

0
7
bigboy

ヘッダーに欠けていたのは "Content-Length"プロパティであり、サーバーは必須であると考えていましたが、必須ではないと思いますか?

ヘッダーに「Content-Length」を追加すると、チャームのように機能します。

3
bigboy

メッセージに基づいて、POSTリクエストの本文の前の空白行である必要があります。追加してみませんか?

現状では、サーバーはこのリクエストを本文なしで、ヘッダーのないように見ている可能性があります:

{ "toaster:toaster" : value

エラーを説明します。

1

「Content-Type」ヘッダーが原因である可能性があります。サーバーが「application/json」のみを受け入れるように構成されている場合、このエラーコードが返されることがあります。 RFC2616 によると、「415 Unsupported Media Type」を返すはずです。

これは単なる推測ですが、「Content-Type」ヘッダーを「application/json」に変更してみてください。

0
Benjamin

最後のヘッダーとリクエストのペイロードの間にCRLFがない可能性があります。

つまり、

POST /restconf/config HTTP/1.1
Host: 127.0.0.1:8080
Accept: */*
Content-Type: application/yang.data+json
{ "toaster:toaster" : { "toaster:toasterManufacturer" : "Geqq", "toaster:toasterModelNumber" : "asaxc", "toaster:toasterStatus" : "_." }}

そしてそれは

POST /restconf/config HTTP/1.1
Host: 127.0.0.1:8080
Accept: */*
Content-Type: application/yang.data+json

{ "toaster:toaster" : { "toaster:toasterManufacturer" : "Geqq", "toaster:toasterModelNumber" : "asaxc", "toaster:toasterStatus" : "_." }}
0
joelc