2010-01-18 4 views
2

En utilisant JSONP sur un site dit xyz.com, j'appelle un site abc.com/test.php. Cependant, chaque fois que j'appelle ce site, j'obtiens un nouvel identifiant de session dans IE6 et IE7. Dans d'autres navigateurs, il reste constant.La session PHP JSONP ne reste pas constante

Le code de test.php est quelque chose comme:

<?php 
session_start(); 
echo session_id(); 
?> 

Cependant, après que je visite http://abc.com/test.php dans une autre fenêtre, puis rafraîchir ma page à xyz.com avec le code JSONP, il montre une pièce d'identité constante. Je n'ai aucune idée pourquoi. Aucune suggestion?

Cela se produit uniquement dans IE6 et IE7. Reposer tout le travail comme prévu. D'une manière ou d'une autre, IE6 et IE7 ne servent pas à conserver l'identifiant de session (c'est-à-dire le nom de cookie) jusqu'à ce que je visite le site dans une autre fenêtre.

Répondre

3

Basé sur des informations sur PHP.net, l'ajout de cet en-tête fonctionnera-t-il?

<?php header('P3P: CP="CAO PSA OUR"'); ?> 

Quote:

« solution lors de l'utilisation des variables de session dans un fichier Php visée par un cadre (.html ou autre type de fichier) à un serveur différent de celui servant à la. php:

Dans ces conditions IE6 ou tard refuse silencieusement le cookie de session qui est a tenté de créer (implicitement ou explicitement par invoquing session_start())

.

En conséquence, votre variable de session renverra une valeur vide. Selon MS kb, la solution de contournement consiste à ajouter un en-tête indiquant que votre page .php distante ne sera pas abusée du fait que la permission a été accordée.

Placez cet en-tête sur le fichier .php qui va créer/mettre à jour les variables de session que vous voulez: »

Si cela ne résout pas, il pourrait être quelque chose à voir avec le HTTReferer comme IE doesn ne pas l'envoyer sur les demandes qui initient à partir de JavaScript (par exemple, faire cela dans IE ne parviendra pas à envoyer le HTTR Referer document.location.href = 'http://example.com/';

+0

Merci beaucoup, si je pouvais vous donner quelques-uns de mes points, je le ferais. –

+0

Juste heureux que cela a aidé! – scunliffe

Questions connexes