2010-08-17 9 views
2

J'ai une page chargée dynamiquement dans une autre page par un appel jQuery. Ce que je veux, c'est rendre la page chargée accessible uniquement si elle est appelée par jQuery et rediriger si elle est accessible directement à partir de la barre d'adresse du navigateur.
Comment est-ce que je fais cela?Redirection sauf si la page est appelée depuis jQuery

Merci!

Répondre

5

Vous ne pouvez pas le faire de manière fiable. La raison est simple: tout peut être truqué.

Les en-têtes HTTP personnalisés peuvent ne pas toujours fonctionner, car certains pare-feu suppriment tous les en-têtes inconnus. Donc, ce ne sera pas fiable à partir du toujours travailler quand il devrait le point de vue. Et ils peuvent même être ajoutés à une demande manuellement en utilisant un outil comme l'extension FireFox "Tamper Data" ... Donc, il ne sera pas fiable du point de vue toujours rediriger soit ...

Les paramètres ne fonctionneront pas, car ils peuvent facilement être truqués par quelqu'un qui sait ce qu'ils font. Donc, il ne sera pas fiable à partir de la redirection toujours quand il n'est pas appelé par le point de vue jQuery.

Si vous le faites simplement pour plus de commodité (pas du point de vue de la sécurité), optez pour un paramètre de requête. Si vous l'utilisez pour des raisons de sécurité, je vous suggérerais de créer un autre design, puisque vous ne pouvez rien imposer du côté client ...

0

Je définirais peut-être une variable vale-querystring quand l'appel JQuery est fait. Puis sur le chargement de la nouvelle page, je vérifierais si cette valeur existe. Si la valeur est là, continuez le chargement de la page, sinon redirigez.

0

ajouter un en-tête personnalisé http dans votre jquery lorsque vous envoyez une demande à la page et de vérifier l'en-tête dans la page

1

Vous pouvez ajouter un paramètre dans votre demande. Par exemple jquery=true. De cette façon, vous n'aurez pas besoin qu'un utilisateur n'ouvre pas directement à partir de la barre d'adresse en passant ce paramètre, mais vous pouvez gérer les deux cas de manière appropriée.

2

Si la demande est une demande ajax, dont un en utilisant jQuery sont fait, les événements suivants seront définis:

$_SERVER['HTTP_X_REQUESTED_WITH'] 
Questions connexes