Spatne prelozeni http requestu na routu
- Blujacker
- Člen | 89
Zdravim,
narazili jsme na problem pri vytvareni jednoho API pro naseho partnera.
Posilaji se GET requesty pres apache nicmene Nette si routu interpretuje
z nejakeho duvodu jako http://IP:porthttp://IP:port/akce
a skonci
to chybou No route for HTTP request
. Toto chovani se objevuje pouze
pokud posilaji request pres jejich interni aplikaci (pokud je napr. pouzit
browser nebo Postman, vse funguje).
V nette exception.log je toto:
[2015-07-24 10-10-49] Nette\Application\BadRequestException: No route for HTTP request. in /home/domains/api/vendor/nette/application/src/Application/Application.php:117 @ http://IP:7088http://IP:7088/customer/get-customer?id=0010002016&type=xml @@ exception-2015-06-03-13-50-03-99bee5084eb9816e51f5183d9c22e28f.html
V apache accesslogu je toto:
[24/Jul/2015:11:10:49 +0200] "GET http://IP:7088/customer/get-customer?id=0010002016&type=xml HTTP/1.1" 500 733 "-" "-"
Je mozne, ze se jedna o chybu v Nette, protoze dle apache logu prisel spravny request ale Nette si ho spatne prelozilo.
Dekuji!
- llook
- Člen | 407
Není pravda, v požadavku může být klidně i absolutní URL a server si s ním musí umět poradit. Viz https://tools.ietf.org/html/rfc7230#… (podobně to bylo i v RFC 2616).
- Blujacker
- Člen | 89
Specifikaci jsem si precetl, ale nejsem o moc moudrejsi. Mame tedy nechat klienta hledat chybu, nebo se jedna o problem u nas? Podle toho, ze v apache accesslogu to vypada naprosto stejne jako request ktery je udelan treba pres browser a spadne to, nych to videl na to Nette.
Dekuji
- Unlink
- Člen | 298
@llook to že by to mal server vedieť je jedna vec, ale to že to
apache nevie, nieje problém nette.
Ale ak tomu dobre chápem, tak podľa tej istej špecifikácie musia klienti
posielať relatívnu URL
To allow for transition to the absolute-form for all requests in some
future version of HTTP, a server MUST accept the absolute-form in
requests, even though HTTP/1.1 clients will only send them in
requests to proxies.
Takže chyba je v klientskej aplikácii :)
- Blujacker
- Člen | 89
Dekuji, to jsem si myslel. Da se nejak v ramci Nette toto vyresit (aby fungovali i absolutni URL)? Ja jsem se snazil nasimulovat to co delaji oni (tj. posilat absolutni URL), ale nepovedlo se mi to.
Porad mi to prijde zvlastni protoze podle apache logu se zda ze je vse v poradu a problem nastava az v Nette
- Unlink
- Člen | 298
Ale ako to podľa access logu môže vyzerať ok, veď ostatné requesty tam majú relatívne cesty, nie?
Nasimulovať to môžeš nejako takto:
https://gist.github.com/…2df1e514831e
Editoval Unlink (25. 7. 2015 9:22)