Meddelande

Minska
No announcement yet.

Skillnad mellan POST- och GET-data

Minska
X
 
  • Filter
  • Klockan
  • Show
Clear All
new posts

  • Skillnad mellan POST- och GET-data

    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?

  • #2
    GET data ger resultatet i en Querestring ja... Vilket kan vara "dåligt" då man inte kan ha hur långa adresser som hellst
    "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

    Kommentera


    • #3
      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


      • #4
        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


        • #5
          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.
          David Shamloo-Ekblad

          Go Habs! Go Team Canada! | For music addicts: Last.fm, SongMeanings

          Kommentera


          • #6
            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.
            Köp ved med hemleverans | Skapa CV online | Bilder att färglägga | Gratis CV-mallar | Bartillbehör

            Kommentera


            • #7
              Hmm...
              http://tomayko.com/articles/2004/12/12/rest-to-my-wife beskriver skillnaderna på ett trevligt och underhållande sätt.

              [Resten borttaget]
              Last edited by jarvklo; 2007-07-12, 00:10. Anledning: Less (se nedan) :P
              jarvklo.se

              Kommentera


              • #8
                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).
                GET ligger i HTTP-headern, men inte POST som i stället ligger i bodyn.

                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


                • #9
                  Det ska f-n försöka brodera ut nånting här på wF numera.

                  Tydal >> Så -Är du nöjd nu då ?
                  jarvklo.se

                  Kommentera


                  • #10
                    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


                    • #11
                      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.
                      David Shamloo-Ekblad

                      Go Habs! Go Team Canada! | For music addicts: Last.fm, SongMeanings

                      Kommentera


                      • #12
                        tydal skrev:
                        GET ligger i HTTP-headern, men inte POST som i stället ligger i bodyn.
                        URLn ä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]
                        /Erik
                        "My love for you is like a truck, BERSERKER"
                        "Would you like some making f**k, BERSERKER"

                        Kommentera


                        • #13
                          tydal skrev:
                          GET ligger i HTTP-headern, men inte POST som i stället ligger i bodyn.
                          Nja, GET ligger i URL'en medans POST ligger i headern.
                          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


                          • #14
                            Erik Juhlin skrev:
                            Request-headers är ju t.ex.:
                            På första raden i ditt exempel har du ju GET-variablerna. I ditt exempel har du inga, men hade du haft hadet det kunnat se ut så här:

                            GET /test.php?variabel1=varde1&variabel2=varde2 HTTP/1.1

                            Kommentera


                            • #15
                              GunnarD skrev:
                              Nja, GET ligger i URL'en medans POST ligger i headern.
                              Jag gör väl en utläggning jag då...

                              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

                              Working...
                              X