2011-07-12 27 views
13

Potrzebuję wysłać nieprzetworzone dane w treści żądania POST do usługi sieciowej. Czy mogę to zrobić za pomocą formularza HTML?Wysyłanie żądania POST danych RAW za pomocą formularza HTML?

Korzystanie ze standardowego pola wejściowego HTML wydaje się nieuchronnie generować treść POST w postaci <name_of_input_field>=<DATA>, podczas gdy ja chciałbym po prostu zamieścić <DATA>.

Czy muszę wykonywać tę prośbę przy użyciu javascript?

Odpowiedz

9

Czy mogę to zrobić za pomocą formularza HTML?

nr

Formularz może wysłać albo application/x-www postać urlencoded lub wielowarstwowy dane/postać transmisji danych.

Jeśli chcesz użyć innego formatu danych, musisz zacząć przeglądać JavaScript i XHR (i podlegać zasadom o tym samym pochodzeniu i tak dalej).

Lepiej byłoby napisać kod po stronie serwera, aby zaakceptować jedno z powyższych kodowań zamiast - nie brakuje bibliotek, które mogą je odkodować.

+0

Niestety, to nie jest możliwe, aby zmiana w tej chwili. Backend jest dość ciasno z SpringMVC, przy użyciu @RequestBody do wprowadzania w niektórych przypadkach. –

-4

W przeciwnym razie użyj CURL, wget lub innych narzędzi wiersza poleceń.

curl -X POST -d "Your raw body data" -H "Content-type: text/plain" http://example.com/path/to/eternal/fame 
1

Istnieje potencjalny włamacz. Jeśli dane albo ma natrual „=” w nim, lub można go zmodyfikować tak, że „=” mogą być dodane w jakiś nieszkodliwy sposób można:

  • Ustaw formy enctype do text/plain
  • Ustaw ukryte wejście w/nazwy pobranej od początku swojego danych, ale z wyłączeniem pierwszego „=”
  • Ustaw pól wejściowych wartość do bajtu, który następuje w „= "do końca danych.

Źródło, gdzie dowiedziałem się o tej technice:

https://systemoverlord.com/2016/08/24/posting-json-with-an-html-form.html

Powiązane problemy