Vad är egentligen skillnaden mellan POST och GET-data? Vad jag har fattat så är GET-variabler något som man bara kan skapa genom att skriva in dem i adressen man ska till, medan POST bara är något man kan skicka med knappar, textrutor och kryssrutor? Kan man inte skicka data som varken syns i adressen eller som man måste skriva in i en textbox?
Meddelande
Minska
No announcement yet.
Skillnad mellan POST- och GET-data
Minska
X
-
Man kan skicka "gömd" data genom att använda input type=hidden.
Men den stora skillnaden är att man kan skicka betydligt mera info med post.So long and thanks for the fish.
Tyvärr så har jag nu en person på min ignoreringslista. Personen ifråga höjer inte trivselfaktorn här, snarar tvärtom varför jag nu tackar för mig!
Kommentera
-
Information från knappar, textrutor och kryssrutor kan skickas både som GET och POST. Du anger vilket du vill använda i form-taggen:
<form method="post" action="?">
<form method="get" action="?">
Storleksbegränsningen på GET är inte enda nackdelen. Eftersom det är en del av webbadressen så hamnar den ju i loggfiler, bokmärken och liknande ställen.
Kommentera
-
Om jag inte minns fel anger väl HTTP-specen inte nån gräns för GET utan det är webbläsarna som sätter den. IE är snålast har jag för mig, med sina 2048 tecken inkl. själva resursen.
Men det är väl skitsamma vad specen säger egentligen eftersom majoriteten fortfarande använder IE. POST erbjuder som sagt större möjligheter att skicka mkt info och det utan någe strul mellan de olika webbläsarna.
Kommentera
-
Det är många skillnader mellan GET och POST, men den mest märkbara (för utvecklare) är att man kan skicka med binärfiler med POST. Utöver det är namnen i sig mer uppenbara än vad man kan tro vad gäller syftet med de två metoderna.
GET: Hämta saker
POST: Lagra saker
Kortfattat: Du kan ladda upp filer till webbservern genom POST men inte genom GET.
Kommentera
-
Hmm...
http://tomayko.com/articles/2004/12/12/rest-to-my-wife beskriver skillnaderna på ett trevligt och underhållande sätt.
[Resten borttaget]
Kommentera
-
jarvklo skrev:Rent tekniskt handlar det i princip mest om att datat läggs som namn-värde-par i olika delar av HTTP-headern som medföljer varje sidbegäran + att man kan skicka med binärdata vid POST (som beskrivs ovan).
Man kan skicka binärdata med GET, dock inte så mycket - som vi varit inne på tidigare - men ändå. Det man inte kan är att innehållsdeklarera det, så webbservern måste veta vad det är för sorts data som kommer.
Kommentera
-
Det ska f-n försöka brodera ut nånting här på wF numera.
Tydal >> Så -Är du nöjd nu då ?
Kommentera
-
Förlåt. Jag menade inget illa. Ibland är det jag som inte har stenkoll på läget och då rättar någon mig. Det är ju så det fungerar på ett forum, att man kompletterar varandra. Men jag vet ju också hur det känns när man gjort en lång utläggning och bara får klagomål i stället för tack.
Kommentera
-
jarvklo,
Redigera in inlägget igen! Jag läste igenom det som hastigast igår natt men orkade inte svara eftersom det var sent och jag egentligen skulle sova. Det fanns ju ett gäng bra punkter som inte redan nämnts, in med dem! Seså, do it.
Kommentera
-
tydal skrev:GET ligger i HTTP-headern, men inte POST som i stället ligger i bodyn.n är väl inte direkt en header.
Request-headers är ju t.ex.:
[citat]GET / HTTP/1.1
Accept: */*
Accept-Language: sv-SE,en-US;q=0.5
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; InfoPath.1)
Host: www.webforum.nu
Proxy-Connection: Keep-Alive
Pragma: no-cache
Cookie: ...[/citat]
Kommentera
-
tydal skrev:GET ligger i HTTP-headern, men inte POST som i stället ligger i bodyn.So long and thanks for the fish.
Tyvärr så har jag nu en person på min ignoreringslista. Personen ifråga höjer inte trivselfaktorn här, snarar tvärtom varför jag nu tackar för mig!
Kommentera
-
GunnarD skrev:Nja, GET ligger i URL'en medans POST ligger i headern.
Vi börjar med http://www.webforum.nu/index.php?threads=40
http talar om att vi ska använda http-protokollet.
www.webforum.nu talar om vilken server som ska anropas.
/index.php?threads=40 talar om vilken sida vi ska begära.
Först så måste vi veta vilken adress servern har som vi ska kontakta, så vi tar fram A-record för www.webforum i DNSn:
www.webforum.nu canonical name = wf1.webforum.nu.
Name: wf1.webforum.nu
Address: 193.13.74.84
Okej, så servern heter egentligen wf1.webforum.nu, men det intressanta i sammanhanget är att adressen är 193.13.74.84 för då har vi en server att kontakta...
Vi kontaktar 193.13.74.84 på port 80 (standard för http) och något vaknar i andra änden och vi kan skicka vår begäran om att få se sidan.
GET /index.php?threads=40 HTTP/1.1
Host: www.webforum.nu
Det är allt, med GET så skickar man bara en header. Men sen får vi ett svar tillbaka från webforum, och det innehåller både en header och en body. Headern slutar med en tomrad och därefter börjar bodyn. Men för att veta när bodyn slutar så måste man tala om längden på den i headern. Så här ser svaret ut:
[kod]HTTP/1.1 200 OK
Connection: close
Date: Thu, 12 Jul 2007 12:45:37 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: PHP/4.3.6
Set-Cookie: bbsessionhash=25232de2f7b25ee4e3145e6035b6f92b; path=/; domain=www.webforum.nu
Set-Cookie: bblastvisit=1184244336; expires=Fri, 11-Jul-2008 12:45:36 GMT; path=/; domain=www.webforum.nu
Set-Cookie: bblastactivity=1184244336; expires=Fri, 11-Jul-2008 12:45:36 GMT; path=/; domain=www.webforum.nu
Expires: 0
Cache-Control: private, post-check=0, pre-check=0, max-age=0
Pragma: no-cache
Content-Type: text/html; charset=ISO-8859-1
Content-Length: 104667
[/kod]
Notera några saker som är intressanta...
Set-Cookie, det är så en cookie skapas. Webbservern skickar med den i headern och nu är det upp till webbläsaren att komma ihåg den och vid alla följande requests lägga med den i headern ("Cookie:").
Content-Type, det är innehållsdeklarationen som talar om vad bodyn innehåller för slags data. Det är det som styr vad webbläsaren ska göra, om den ska visas det själv, om den ska använda ett plugin eller om den ska spara det som fil.
Content-Length är hur många bytes som bodyn är på, i det här fallet alltså html-sidan vi får som svar (index.php).
Det var GET och svaret på det, men om nu går över till POST, vilket till exempel används när man skriver ett inlägg...
Då är URLn http://www.webforum.nu/newreply.php
POST /newreply.php HTTP/1.1
Host: www.webforum.nu
Inledningen ser nästan likadan ut (man kan skicka med "GET-variabler" här också om man vill) men sen måste vi lägga till några ytterligare headerrader:
Content-Type: application/x-www-form-urlencoded
Content-Length:
Content-Typen anger att det är ett urlkodad formulärdata vi ska skicka, och så måste vi ha antalet bytes på Content-Length. Sedan måste vi också ha med vår cookie som talar om vem vi är inloggade som, annars kommer inte inlägget att accepteras.
Men därefter kommer en tomrad och så börjar bodyn som innehåller datat vi ska POST:a...
do=postreply&s=&t=158652p=1333913&title=&message=Hello+World
Det kompletta meddelandet blir alltså:
[kod]POST /newreply.php HTTP/1.1
Host: www.webforum.nu
Cookie: Den-inloggades-cookie
Content-Type: application/x-www-form-urlencoded
Content-Length: 60
do=postreply&s=&t=158652p=1333913&title=&message=Hello+World[/kod]
Först har vi alltså header, sen en tomrad och därefter bodyn. Observera att jag bara har visat ett utdrag av de variabler som är med i postdatat.
Kommentera
Kommentera