Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP] Wanneer data in POST, wanneer in header?

Pagina: 1
Acties:

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
In mijn (Laravel) applicatie kunnen mensen inloggen. De server geeft dan een token mee, die voor ieder volgend request meegestuurd moet worden. Nu weet ik hiervoor twee opties:

1) De token in een hidden input gooien, en meesturen met het formulier
2) De token verschepen via de HTTP header.

Gevoelsmatig zeg ik: optie 2, zodat (bijv in PHP) de $_POST mooi schoon blijft.

Maar de generieke vraag is: wanneer stop je dingen - in het geval van het aanroepen van een REST-server - in de body van de request (bijv. in de POST), en wanneer in de header?

  • RaZ
  • Registratie: November 2000
  • Niet online

RaZ

Funky Cold Medina

Stop het in een cookie, want op elke pagina post-data kwakken, veel plezier met de pop-ups of de data opnieuw verzonden moet worden als mensen de back-knop gebruiken.

Ey!! Macarena \o/


  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
Dank voor je reactie. Je schrijft 'pagina', maar er is niet altijd sprake van een pagina :-). In de meeste gevallen niet zelfs, maar firmware van een machine. Volgens mijn informatie waren koekjes no-go.

[ Voor 12% gewijzigd door Rekcor op 09-05-2014 13:03 ]


  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 30-10 12:53

Douweegbertje

Wat kinderachtig.. godverdomme

en nvm :)

[ Voor 177% gewijzigd door Douweegbertje op 09-05-2014 13:10 ]


  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
sessie mag toch niet bij REST?

  • Douweegbertje
  • Registratie: Mei 2008
  • Laatst online: 30-10 12:53

Douweegbertje

Wat kinderachtig.. godverdomme

Las pas later dat het om een REST service ging.

  • TRON
  • Registratie: September 2001
  • Laatst online: 17-11 09:59
Geef de token dan in de url mee. http://site/actie/id/token of iets in die richting. Moet je dan wel voor alle urls doen.

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
Maar waarom zou je het niet als HTTP header doen?

Bij een echte sessie gebeurt dit toch ook?

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21-11 14:12
Ik zou het ook gewoon in de Authorization header zetten.

  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Rekcor schreef op vrijdag 09 mei 2014 @ 13:32:
Maar waarom zou je het niet als HTTP header doen?

Bij een echte sessie gebeurt dit toch ook?
Da's een cookie (of in de URL), wat in feite weer een HTTP-header is :+

  • TRON
  • Registratie: September 2001
  • Laatst online: 17-11 09:59
Rekcor schreef op vrijdag 09 mei 2014 @ 13:32:
Maar waarom zou je het niet als HTTP header doen?

Bij een echte sessie gebeurt dit toch ook?
Wat bedoel jij met een HTTP-header? :)

Leren door te strijden? Dat doe je op CTFSpel.nl. Vraag een gratis proefpakket aan t.w.v. EUR 50 (excl. BTW)


  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
Bijv.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$crl = curl_init();

$headr = array();
$headr[] = 'Content-length: 0';
$headr[] = 'Content-type: application/json';
$headr[] = 'Authorization: OAuth '.$accesstoken;
$headr[] = 'myHeader: myValue' ;

curl_setopt($crl, CURLOPT_HTTPHEADER,$headr);
curl_setopt($crl, CURLOPT_POST,true);
$rest = curl_exec($crl);

curl_close($crl);

Verwijderd

Zo zou ik het inderdaad doen, met 1 kleine wijziging:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$crl = curl_init();

$headr = array();
$headr[] = 'Content-length: 0';
$headr[] = 'Content-type: application/json';
$headr[] = 'Authorization: Bearer '.$accesstoken;
$headr[] = 'myHeader: myValue' ;

curl_setopt($crl, CURLOPT_HTTPHEADER,$headr);
curl_setopt($crl, CURLOPT_POST,true);
$rest = curl_exec($crl);

curl_close($crl);


Zie ook deze RFC inzake het gebruik van bearer tokens i.c.m. OAuth 2.0. Het is mijns inziens altijd goed om zoveel mogelijk geaccepteerde en gedocumenteerde standaarden te volgen. Als je mensen die jouw applicatie gebruiken vertelt dat de applicatie middels OAuth 2.0 Bearer tokens werkt, weten ze genoeg. Met een zelfgebakken oplossing (tokens in POST meesturen of in de URL) zal je altijd meer informatie moeten voorzien en moet de klant cq. gebruiker meer werk doen om gebruik te kunnen maken van jouw applicatie.

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 21-11 10:33
Voor een REST service is de request header hier een goede plek voor.
POST data reserveer je dan voor data die bij de request-uri hoort.

  • L01
  • Registratie: December 2003
  • Laatst online: 17-11 21:53

L01

Je header is een goede manier om je authenticatie key mee te sturen.
POST gebruik je als je data wilt aanbieden aan de service, GET als je wat van de service wilt hebben. PUT gebruik je als je iets wil updaten.

Wikipedia: Hypertext Transfer Protocol

Hi, I'm a signature virus. Put me in your signature to help me spread.


Verwijderd

L01 schreef op vrijdag 09 mei 2014 @ 21:30:
Je header is een goede manier om je authenticatie key mee te sturen.
POST gebruik je als je data wilt aanbieden aan de service, GET als je wat van de service wilt hebben. PUT gebruik je als je iets wil updaten.

Wikipedia: Hypertext Transfer Protocol
let er wel dat de semantiek rondom PUT en POST in REST nogal aan discussie onderhevig is. Kan best verwarrend zijn. :P

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 08-10 13:03
Dank!
Pagina: 1