Javascript Cookie Pfad Probleme
Core
- javascript
Javascript:
<script type="text/javascript" charset="UTF-8">document.cookie = "JavascriptProf=789678; path=/; ";</script>
Erläuterung des Problems:
Da ich an kurze Urls verwende die mit htaccess auf meine index.php
umgeleitet werden, kommt es bei diesem Javascript zu folgenden Problem:
Befinde ich mich auf: "http://localhost/projektordner/seite1/"
kann das Cookie problemlos gesetzt werden. Lasse ich jedoch das
letze Slash weg und "befinde" mich "http://localhost/projektordner/seite1"
wird das Cookie nicht gesetzt,.. oder kann von PHP nicht mehr ausgelesen
werden,..
"http://localhost/projektordner/seite1(/)" ist in immer intern
"http://localhost/projektordner/index.php".
Im Head des HTMLs befindet sich auch eine Base Angabe:
<base href='http://localhost/projektordner/' />
Ich habe mich jetzt schon mit:
document.cookie = "path=''; domain='';";
gespielt bin jedoch auf keinen grünen Zweig gekommen,..
Ich hoffe ihr könnt mir helfen
Hallo,
ich dachte, Cookies orientieren sich an der Domain, nicht an den Ordnern. Vielleicht wird der Cookie ja aus irgend einem Grunde nicht korrekt gesetzt, wenn der Slash fehlt, vom Javascript. Oder die index.php verarbeitet nicht richtig. Oder die .htaccess routet nicht korrekt.
Gruß
jobo
ich dachte, Cookies orientieren sich an der Domain, nicht an den Ordnern. Vielleicht wird der Cookie ja aus irgend einem Grunde nicht korrekt gesetz
Grundsätzlich funktioniert die Cookiesetzung auf "http://localhost/projektordner/index.php" aber auch auf "http://localhost/projektordner/seite1/", jedoch lässt man das Slash
nach Seite1 weg,... ist das Cookie für PHP unauffindbar.
Meine HTACCESS sieht wie folgt aus:
AddDefaultCharset UTF-8
AddCharset utf-8 .css .html .xhtml .js
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.* index.php
Und funktioniert bis jetzt in allen Fällen bis auf diesen perfekt.
$_COOKIE['JavascriptProf']
Das PHP funktioniert wie gesagt auch in jedem Fall ausser
das Javascript Cookie wird nicht gesetzt - was der Fall ist
(in der oben beschriebenen Situation).
Hi,
Befinde ich mich auf: "http://localhost/projektordner/seite1/"
kann das Cookie problemlos gesetzt werden. Lasse ich jedoch das
letze Slash weg und "befinde" mich "http://localhost/projektordner/seite1"
wird das Cookie nicht gesetzt,.. oder kann von PHP nicht mehr ausgelesen
werden,..
Nicht herumraten, sondern überprüfen:
"http://localhost/projektordner/seite1(/)" ist in immer intern
"http://localhost/projektordner/index.php".
„Intern“ interessiert hier nicht.
Für das Setzen sowie das Senden des Cookies an den Server ist für den Client ausschließlich der Pfad interessant, unter dem er die Ressource abgerufen hat.
(Höchstens, dass du beim serverseitigen „internen“ Umschreiben des Requests etwas falsch machst und dir dabei der Cookie „verloren“ geht, wäre theoretisch denkbar.)
Im Head des HTMLs befindet sich auch eine Base Angabe:
<base href='http://localhost/projektordner/' />
Das tät' ich lassen.
BASE macht m.E. mehr Probleme, als es löst.
Externe Ressourcen (CSS, Scripte, Bilder) mit einem / beginnend absolut-relativ zur Domainwurzel zu verlinken, ist m.E. vorzuziehen.
Ich habe mich jetzt schon mit:
document.cookie = "path=''; domain='';";
gespielt bin jedoch auf keinen grünen Zweig gekommen,..
Na ganz ohne einen Cookie-Namen kann's ja nichts werden.
MfG ChrisB
Hi,
Nicht herumraten, sondern überprüfen:
- Gesetzte Cookies vom Browser anzeigen lassen.
- Firebug nehmen und schauen, ob Cookie beim nächsten Request an den Server übertragen wird.
Das habe ich per PHP gemacht und das Cookie wird sobald ich das Slash
in der Adresse weglasse nicht mehr aktualisiert. Firebug sagt das selbe.
Aber warum,..
Ich habe mich jetzt schon mit:
document.cookie = "path=''; domain='';";
gespielt bin jedoch auf keinen grünen Zweig gekommen,..Na ganz ohne einen Cookie-Namen kann's ja nichts werden.
Habe ich natürlich in der Praxis gemacht, hier nur nicht vollständig gepostet :)
Hallo,
http://stackoverflow.com/questions/2156399/restful-cookie-path-fails-in-ie-without-trailing-slash
Hat es was mit IE zu tun?
Gruß
jobo
Peinlich Peinlich,.
Hatte leider einen schreib Fehler drinnen (";" vergessen),
die Angabe (path=/;) war nötig.
Hallo,
Peinlich Peinlich,.
Hatte leider einen schreib Fehler drinnen (";" vergessen),
die Angabe (path=/;) war nötig.
Das immer das Problem, wenn man den Code nicht beispielhaft vollständig hat.
Gruß
jobo