这个 HTTP POST 请求有什么问题?

big*_*boy 7 http http-headers request json

我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)

小智 0

也许是因为“Content-Type”标头。如果服务器配置为仅接受“application/json”,那么它可能会返回此错误代码。尽管根据RFC2616它应该返回“415 Unsupported Media Type”它应该返回“415 Unsupported Media Type” 。

这只是一个猜测,但您可以尝试将“Content-Type”标头更改为“application/json”。