Autor | Zpráva | ||
---|---|---|---|
Ottik Profil * |
#1 · Zasláno: 24. 12. 2018, 19:51:58
ahoj, mám tento kód na localhostu
if (!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { echo "je ajax"; } else { echo "NENI ajax"; } |
||
Taps Profil |
#2 · Zasláno: 24. 12. 2018, 21:00:30
v jakem souboru provadis detekci? v tom, ktery je volany pres ajax?
|
||
Davex Profil |
#3 · Zasláno: 24. 12. 2018, 21:40:34
Ottik:
Zřejmě JavaScript neposílá hlavičku X-Requested-With nebo ne s očekávanou hodnotou, což by se dalo snadno zjistit ve vývojářských nástrojích prohlížeče.
|
||
ottik Profil * |
Aha to je divný, podívám se na to, ale co mám teda dělat když JavaScript neposílá hlavičku? Ještě sem se nedíval, tak teprve uvidím, ale dá se to nějak ovlivnit zda podle hlavičku nebo ne a jakou hodnotu pošle?
Taps: „v jakem souboru provadis detekci?“ Mám pekné URL adresy a detekci provádím v souboru config.php kterej se přidá úplně ke všemu |
||
N71 Profil * |
#5 · Zasláno: 25. 12. 2018, 12:14:01
Detekce AJAXu pomocí X-Requested-With je jen konvence, nic víc. Hlavičku není možné nastavit (stejně jako všechny ostatní hlavičky s jistými výjimkami) při komunikaci z cizí domény bez svolení CORS politikou příjemce. Takže se toho dá využít i jako prostředek CSRF ochrany. Ale nastavit ji musíš sám – lidi si už na to odvykli, protože to za ně často dělá jQuery nebo jiné frameworky.
|
||
Ottik Profil * |
Davex:
tohle je z vývojářskýho nástroje ======== Hlavičky požadavku: Host: localhost User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64; rv:64.0) Gecko/20100101 Firefox/64.0 Accept: */* Accept-Language: cs,sk;q=0.8,en-US;q=0.5,en;q=0.3 Accept-Encoding: gzip, deflate Referer: localhost origin: localhost DNT: 1 Connection: keep-alive ========= Hlavičky odpovědi: HTTP/1.1 200 OK Date: Tue, 25 Dec 2018 11:38:11 GMT Server: Apache/2.4.35 (Win32) OpenSSL/1.1.0i PHP/7.2.11 X-Powered-By: PHP/7.2.11 Content-Length: 355 Keep-Alive: timeout=5, max=100 Connection: Keep-Alive Content-Type: text/html; charset=UTF-8 ..nevidím tam nic jako X-Requested-With N71: a jak to mám nastavit? používám fetch v js |
||
Radek9 Profil |
Ottik:
fetch('url', { headers: { 'X-Requested-With': 'XMLHttpRequest' } }) |
||
Ottik Profil * |
#8 · Zasláno: 25. 12. 2018, 13:50:50
Radek9:
díky, funguje to... zkoušel jsem tam dát toto headers: {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest' a nefungovalo to, to tvoje funguje... díky |
||
Keeehi Profil |
#9 · Zasláno: 25. 12. 2018, 15:08:40
Ottik:
Druhá možnost je si na ajax požadavky vyhradit unikátní url. Pak se žádná detekce pomocí hlaviček dělat nemusí jelikož je to jasné z url. |
||
Ottik Profil * |
#10 · Zasláno: 25. 12. 2018, 17:00:10
Keeehi:
„Druhá možnost je si na ajax požadavky vyhradit unikátní url.“ tohle mám taky, ale když se nejedná o ajax tak to uživatele hodí na 404 stránku, podle mě je to lepší než kdyby se mu měl vypsat json text, nadruhou stranu by nikdo nenašel unikátní url. Taky mě napadlo že bych k ajaxu přidával do get nebo post formdata s název "ajax" podle kterýho by bylo poznat zda se jedná o ajax nebo ne. Teď už to funguje jak sem potřeoval, to je hlavní. |
||
Časová prodleva: 6 let
|
0