Disons que j'ai un site Web appelé a.com
, et lorsqu'une page spécifique de ce site est chargée, disons un lien de page, j'aime définir un cookie pour un autre site appelé b.com
, puis rediriger l'utilisateur vers b.com
.
Je veux dire, à la charge de a.com/link
je veux définir un cookie pour b.com
et rediriger l'utilisateur vers b.com
.
Je l'ai testé et le navigateur a effectivement reçu le cookie de a.com/link
, mais il n'a pas envoyé ce cookie lors de la demande de redirection vers b.com
. Est-ce normal?
Pouvons-nous définir des cookies pour d'autres domaines?
javascript
cookies
redirect
Rasoul Zabihi
la source
la source
Réponses:
Vous ne pouvez pas définir de cookies pour un autre domaine. Permettre cela présenterait un énorme défaut de sécurité.
Vous devez demander à b.com de définir le cookie. Si a.com redirige l'utilisateur vers
b.com/setcookie.php?c=value
Le script setcookie peut contenir les éléments suivants pour définir le cookie et rediriger vers la bonne page sur b.com
la source
Similaire à la réponse principale, mais au lieu de rediriger vers la page et inversement, ce qui entraînera une mauvaise expérience utilisateur, vous pouvez définir une image sur le domaine A.
Et puis sur le domaine B qui est example.com dans cookie.php, vous aurez le code suivant:
Hattip à Subin
la source
Vous pouvez probablement utiliser
Iframe
pour cela. Facebook utilise probablement cette technique. Vous pouvez en savoir plus ici . Stackoverflow utilise une technique similaire, mais avec un stockage local HTML5, plus à ce sujet sur leur blogla source
La configuration de cookies pour un autre domaine n'est pas possible.
Si vous souhaitez transmettre des données à un autre domaine, vous pouvez les encoder dans l'URL.
la source
Vous ne pouvez pas, du moins pas directement. Ce serait un risque de sécurité désagréable.
Bien que vous puissiez spécifier un attribut de domaine , la spécification dit "L'agent utilisateur rejettera les cookies à moins que l'attribut de domaine ne spécifie une portée pour le cookie qui inclurait le serveur d'origine."
Étant donné que le serveur d'origine est
a.com
et que cela n'inclut pasb.com
, il ne peut pas être défini.Vous devrez à
b.com
la place définir le cookie. Vous pouvez le faire via (par exemple) des redirections HTTP versb.com
et retour.la source
evil-hack.com
pourrait avoir un cookietheir-favourite-website.com
qui modifierait ses préférences sur ce site Web.Dans le cas où vous avez
a.my-company.com
etb.my-company.com
au lieu de justea.com
etb.com
vous pouvez émettre un cookie pour le.my-company.com
domaine - il sera accepté et envoyé aux deux domaines.la source
voir RFC6265 :
Mais la solution de contournement mentionnée ci-dessus avec image / iframe fonctionne, bien qu'elle ne soit pas recommandée en raison de son insécurité.
la source
Vous ne pouvez pas, mais ... Si vous possédez les deux pages, alors ...
1) Vous pouvez envoyer les données via les paramètres de requête ( http://siteB.com/?key=value )
2) Vous pouvez créer un iframe du site B à l'intérieur du site A et vous pouvez envoyer des messages postaux d'un endroit à l'autre. Comme le site B est le propriétaire des cookies du site B, il sera en mesure de définir la valeur dont vous avez besoin en traitant le message correct. (Vous devez empêcher d'autres expéditeurs indésirables de vous envoyer des messages! Cela dépend de vous et du mécanisme que vous décidez d'utiliser pour empêcher que cela ne se produise)
la source
Dans ce lien, nous trouverons la solution Link .
la source
Envoyez une demande POST depuis A. Les demandes de publication sont uniquement côté serveur et ne sont pas accessibles par le client.
Vous pouvez envoyer une requête POST de
a.com
à enb.com
utilisant CURL (recommandé, côté serveur) ou unmethod="POST"
formulaire caché (côté client). Si vous optez pour ce dernier, vous voudrez peut-être obscurcir votre JavaScript afin que l'utilisateur ne puisse pas comprendre l'algorithme et interférer avec lui.Créez une passerelle
b.com
pour définir les cookies:Si vous voulez aller plus loin dans la sécurité, implémentez une fonction des deux côtés (
a.com
etb.com
) pour crypter (activera.com
) et décrypter (surb.com
) les données à l'aide d'un chiffrement cryptographique.Si vous essayez de faire quelque chose qui doit être absolument sécurisé (par exemple, transférer une session de connexion), essayez oAuth ou inspirez -vous de https://api.cloudianos.com/docs#v2/auth
la source