Autor | Zpráva | ||
---|---|---|---|
marek187 Profil |
Na hlavnu doménu (
www.domena.sk ) posielam požiadavku zo subdomény (user.domena.sk ) cez tento javascript:
<script type="text/javascript" src="include/js/jquery-1.4.3.min.js"></script> <script type='text/javascript'> $(document).ready(function(){ $(".buynow").click(function() { var Index = $(this).index(".buynow"); var Id = $(".buynowid:eq("+Index+")").attr("value"); $.get('user/actions/action_addcart.php?id='+Id, function(data) { $("#action").slideUp(); $("#action").html(data); $('#action').slideDown(); }); }); }); </script> www.domena.sk/user/actions/action_addcart.php sa cez symlink mení na subdoménu user.domena.sk/actions/action_addcart.php .
Nastavením header("Access-Control-Allow-Origin: http://www.domena.sk"); v action_addcart.php som javascript opäť rozbehal, avšak nastal problém so $_SESSION , ktoré sa nepresúvajú spolu s požiadavkou. Preto som nastavil aj header("Access-Control-Allow-Credentials: true"); , ale žiadna zmena. Údajne treba ešte nejako upraviť javascript pridaním withCredentials , ale netuším ako a či to skutočne vyrieši môj problém.
|
||
Chamurappi Profil |
#2 · Zasláno: 24. 7. 2014, 02:39:57
Reaguji na marka187:
Nevím, jestli jsem tě správně pochopil, ale symlink je vlastností souborového systému, ne? Takže je mimo hru. Z pohledu prohlížeče adresa user/actions/action_addcart.php vrátí co? Nějaké HTTP přesměrování, nebo data? Pokud se nepřesměrovává, nejsou Access-Control hlavičky potřeba a tvůj PHP skript samozřejmě nedostane cookies, které jsou vázané na doménu user.domena.sk , protože požadavek se posílá na ww>w.domena.sk .
Můžeš popsat, co je přesně cílem? A proč to nejde v rámci jedné domény? |
||
marek187 Profil |
Chamurappi:
„Můžeš popsat, co je přesně cílem? A proč to nejde v rámci jedné domény?“ Nejde to v rámci jednej domény, pretože existuje nejaký bezpečnostný prvok nazývaný same-origin policy, ktorý blokuje požiadavky z cudzích domén, aj vlastných subdomén, dokým to nepovolíme. Čo sa týka toho symlinku, tak som to popísal len preto, aby ste vedeli prečo je v javascripte cesta user/actions/action_addcart.php , resp. že ten súbor sa načítava automaticky už zo subdomény user.domena.sk . Tento súbor má vykonať potrebné požiadavky a vrátiť mi spať správy, ale pokiaľ užívatel nie je prihlásený, tak má vratiť správu, že je potrebné sa prihlásiť. A tu nastáva problém, že aj po prihlásení stále vyhadzuje túto správu, resp. nevie vykonať potrebné požiadavky, lebo neprenesie $_SESSION . Bez hlavičky Access-Control-Allow-Origin mi tento javascript nevyhodí žiadnú správu, resp. nefunguje. Našiel som na rôznych fórach, že je potrebné skombinovať hlavičku Access-Control-Allow-Credentials s withCredentials: true v javascripte a že následne by to malo fungovať, ale neviem s tým už ďalej pohnúť.
|
||
Chamurappi Profil |
#4 · Zasláno: 24. 7. 2014, 03:54:58
Reaguji na marka187:
„pretože existuje nejaký bezpečnostný prvok nazývaný same-origin policy“ O tom vím, já se ptal, proč to nemůžeš ze své strany udělat tak, že bys byl stále na stejné doméně. Ptám se, zda to rozparcelování na subdomény opravdu k něčemu je, nebo jestli to jen vytváří problémy :-) „aby ste vedeli prečo je v javascripte cesta user/actions/action_addcart.php , resp. že ten súbor sa načítava automaticky už zo subdomény“
Požadavek ale posíláš na stále stejnou doménu a pokud ten PHP skript nepřesměrovává na user.domena.sk (přes HTTP), tak Access-Control hlavičky vůbec nepotřebuješ… jsi na stále stejné doméně w>ww.domena.sk . Nebo jak podle tebe přijde prohlížeč do kontaktu s doménou user.domena.sk ? Viz moje druhá+třetí otázka v minulém příspěvku.
„resp. nevie vykonať potrebné požiadavky, lebo neprenesie $_SESSION “
Nepřenesou se ti cookies pro doménu user.domena.sk , ale pro doménu www.domena.sk . Na které doméně ta session funguje? Řekl bych, že by mohla fungovat na obou, protože cookie může mít nastavenou platnost pro celou doménu druhého řádu. Ale to je spíš otázka z oblasti PHP…
|
||
marek187 Profil |
Chamurappi:
„O tom vím, já se ptal, proč to nemůžeš ze své strany udělat tak, že bys byl stále na stejné doméně. Ptám se, zda to rozparcelování na subdomény opravdu k něčemu je, nebo jestli to jen vytváří problémy :-)“ Nie je to nevyhnutné, len som sa rozhodol užívateľské rozhranie umiestniť na subdoménu. Mám aj administrátorske rozhranie na subdoméne, tam však nebehám s požiadavkami medzi hlavnou domenou a subdoménou. Dal si mi však teraz chrobáka do hlavy, či to má cenu sa s tým baviť vrámci užívateľského rozhrania a nevrátiť to radšej späť na klasický adresár. Možno by to bolo tak aj praktickejšie a jednoduchšie. :) „Požadavek ale posíláš na stále stejnou doménu a pokud ten PHP skript nepřesměrovává na user.domena.sk (přes HTTP), tak Access-Control hlavičky vůbec nepotřebuješ… jsi na stále stejné doméně w>ww.domena.sk. Nebo jak podle tebe přijde prohlížeč do kontaktu s doménou user.domena.sk? Viz moje druhá+třetí otázka v minulém příspěvku.“ Po zadaní www.domena.sk/user/actions/action_addcart.php sa automaticky presmeruje na user.domena.sk/actions/action_addcart.php , takže súbor už načítava zo subdomény.
„Nepřenesou se ti cookies pro doménu user.domena.sk, ale pro doménu w>ww.domena.sk. Na které doméně ta session funguje? Řekl bych, že by mohla fungovat na obou, protože cookie může mít nastavenou platnost pro celou doménu druhého řádu. Ale to je spíš otázka z oblasti PHP…“ Session/cookies som nastavil cez .htaccess tak, aby platili na hlavnej doméne aj subdoménach, čiže v tom problém nie je. Pokiaľ do prehliadača zadám konkrétnu požiadavku napr. user.domena.sk/actions/action_addcart.php?id=5 , tak všetko urobí správne, len keď sa to zadáva cez javascript na hlavnej doméne, tak nepresúva aj $_SESSION , lebo to treba nejako povoliť.
//Edit: Zrušil som subdoménu pre užívateľské rozhranie, čím som sa zbavil tohto problému, ale keby niekto vedel riešenie, tak sa môže oň podeliť. |
||
Časová prodleva: 10 let
|
0