O que há de errado com esta solicitação HTTP POST?

7

Eu estou tentando fuzz um servidor usando o framework fuzzing Sulley.

Eu observo o seguinte fluxo no Wireshark. O erro fala sobre um problema com a análise JSON, no entanto, quando eu tento a mesma solicitação HTTP POST usando a extensão Postman do Google Chrome, ela é bem-sucedida.

Alguém pode, por favor, explicar o que poderia estar errado sobre esta solicitação HTTP POST? O JSON parece válido.

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
    
por bigboy 07.06.2014 / 07:52

3 respostas

3

Era a propriedade "Content-Length" que estava faltando no cabeçalho e o servidor achou que era obrigatório, o que eu acho que não deveria ser obrigatório?

Depois de adicionar o "Content-Length" ao cabeçalho, funciona como um encanto.

    
por 08.06.2014 / 07:07
1

Com base na sua mensagem, ela deve ser uma linha em branco antes do corpo da solicitação POST. Você pode tentar adicionar um?

Como é, é possível que o servidor veja este pedido sem corpo e com um cabeçalho como:

{ "toaster:toaster" : value

que explicaria o erro.

    
por 07.06.2014 / 11:33
0

Talvez seja por causa do cabeçalho "Content-Type". Se o servidor estiver configurado para aceitar apenas "aplicativo / json", ele poderá retornar esse código de erro. Embora deva devolver "415 tipo de suporte não suportado" de acordo com a RFC2616 .

Este é apenas um palpite, mas você pode tentar mudar o cabeçalho "Content-Type" para "application / json".

    
por 07.06.2014 / 10:22