Jaka jest różnica między "Request Payload" a "Form Data", jak widać w zakładce Chrome Dev tools Network

Mam starą aplikację internetową, którą muszę obsługiwać(której nie napisałem).

Kiedy wypełniam formularz i wysyłam, a następnie sprawdzam zakładkę "Sieć" w Chrome widzę "Request Payload", gdzie normalnie widzę "dane formularza". Jaka jest różnica między tymi dwoma i kiedy JEDEN zostanie wysłany zamiast drugiego?

Wygooglowałem to, ale tak naprawdę nie znalazłem żadnych informacji wyjaśniających to (po prostu ludzie próbują dostać aplikacje javascript wysyłać "dane formularza" zamiast " żądanie Ładowność".

Author: red888, 2014-04-16

2 answers

Ładunek żądania - a dokładniej: ciało ładunku żądania HTTP - dane są zwykle wysyłane przez Post lub Put Request . Jest to część po nagłówkach i CRLF żądania HTTP .

Prośba z Content-Type: application/json może wyglądać tak:

POST /some-path HTTP/1.1
Content-Type: application/json

{ "foo" : "bar", "name" : "John" }

Jeśli przesyłasz to za AJAX przeglądarka po prostu pokazuje, co przesyła jako ciało ładunku. To wszystko, co może zrobić, ponieważ nie ma pojęcia, skąd pochodzą dane.

Jeśli wyślij formularz HTML z method="POST" i Content-Type: application/x-www-form-urlencoded lub Content-Type: multipart/form-data twoja prośba może wyglądać tak:

POST /some-path HTTP/1.1
Content-Type: application/x-www-form-urlencoded

foo=bar&name=John

W tym przypadku form-data jest żądaniem. Tutaj przeglądarka wie więcej: wie, że bar jest wartością pola wejściowego Foo przesłanego formularza. I to ci pokazuje.

Różnią się więc w Content-Type, ale nie w sposobie przekazywania danych. W obu przypadkach dane znajdują się w treści wiadomości. Chrome rozróżnia sposób prezentacji danych w deweloperze Narzędzia.

 292
Author: lefloh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:54:53

W Chrome żądanie z 'Content-Type:application/json' pokazuje jako żądanie PayedLoad i wysyła dane jako obiekt json.

Ale request z 'Content-Type: application / x-www-form-urlencoded' pokazuje dane formularza i wysyła dane jako Key: Value Pair , więc jeśli masz tablicę obiektu w jednym kluczu to wartość tego klucza:

{ Id: 1, 
name:'john', 
phones:[{title:'home',number:111111,...},
        {title:'office',number:22222,...}]
}

Wysyła

{ Id: 1, 
name:'john', 
phones:[object object]
phones:[object object]
}
 14
Author: Mohammadreza,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-04 05:02:36