Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Javascript intersite

2 réponses
Avatar
MP
Bonjour,

J'essaye de faire un truc sans doute un peu bizarre mais qui me serait très
pratique :

Soit deux sites : A et B

Je voudrais ouvrir depuis A une popup qui est sur B. Ca, OK.

Depuis la popup, je voudrais aller renseigner un champ de la fenêtre parente
qui est sur A.

Si je le fais en direct, je me prends un problème de droits.

J'ai alors a tout hasard essayé autrement me disant que la première méthode
devait pouvoir permettre de faire des abus, ça doit être une limitation
destinée a protéger l'internaute.

Méthode 2 contournement : Je fais une fonction sur la page hébergée sur A
et je l'appelle depuis la pop-up hébergée sur B.

Même punition : uncaught exception: Permission refusée.



C'est totalement impossible en simple javascript ?

Si c'est le cas, c'est pas grave, j'ai d'autres méthodes possibles (A et B
partagent la même bdd.) mais ça alourdirais je pense les choses.



Merci par avance.

2 réponses

Avatar
O.L.
MP a couché sur son écran :



Bonjour,

J'essaye de faire un truc sans doute un peu bizarre mais qui me serait très
pratique :

Soit deux sites : A et B

Je voudrais ouvrir depuis A une popup qui est sur B. Ca, OK.

Depuis la popup, je voudrais aller renseigner un champ de la fenêtre parente
qui est sur A.

Si je le fais en direct, je me prends un problème de droits.

J'ai alors a tout hasard essayé autrement me disant que la première méthode
devait pouvoir permettre de faire des abus, ça doit être une limitation
destinée a protéger l'internaute.

Méthode 2 contournement : Je fais une fonction sur la page hébergée sur A et
je l'appelle depuis la pop-up hébergée sur B.

Même punition : uncaught exception: Permission refusée.



C'est totalement impossible en simple javascript ?


Tu peux tourner le problème dans tous les sens, a priori, c'est
impossible.

Si c'est le cas, c'est pas grave, j'ai d'autres méthodes possibles (A et B
partagent la même bdd.) mais ça alourdirais je pense les choses.


Le seul moyen que je vois est effectivement de passer par un tiers : un
cookie (création demandée par B, lecture par A et update du champ), ou
une BDD, ou un fichier texte ...

Piste à suivre éventuellement : je me demande si le nom de la fenêtre
(window.name) n'est pas une donnée qui reste accessible en
lecture/écriture quelle que soit la page et le domaine de cette page.
Faudrait essayer de changer window.name à partir de B, et de tester
si A voit la modif (et peut donc updater le champ).

--
Olivier Ligny
www.virgal.net (mondes virtuels 3D)

Avatar
SAM

Soit deux sites : A et B

Je voudrais ouvrir depuis A une popup qui est sur B. Ca, OK.

Depuis la popup, je voudrais aller renseigner un champ de la fenêtre parente
qui est sur A.

Si je le fais en direct, je me prends un problème de droits.


Que ce soit par popup, par iframe, frame ou même object, on ne peut au
grand jamais faire du cros-domain en JavaScript.
Il n'y a pas à chercher à tourner le truc, le brouteur et son JS sont
touj les plus malins et empècheraont d'analyser la page du site B si on
est sur le site A.
Ça peut aller jusqu'à des trucs très bêtes du genre :
- siteA/dossierA/fichierA.htm
qui ne pourra interroger
- dossierA.siteA/fichierB.htm

La seule soluce est de passer par du code sur le serveur (le php par
exemple peut très bien récupérer des données d'un autre domaine).

C'est totalement impossible en simple javascript ?


Oui, oui, et oui, c'est interdit.

Si c'est le cas, c'est pas grave, j'ai d'autres méthodes possibles (A et B
partagent la même bdd.) mais ça alourdirais je pense les choses.


C'est une des choses qui ont mis en vogue Ajax (mélange de JS et code
serveur).

Voir Google : js cross-domain

(il y aurait possibilité d'astuce(s) mais ... )
--
sm