Aller au contenu

header location et passage en POST


Sujets conseillés

Posté

Bonjour,

Je cherche le moyen de faire un header location (sur une url externe à mon site) avec passage de paramètres en POST.

Les solutions avec fsockopen permettent de lire l'URL externe mais moi je désire qu'elle soit affichée (avec son URL dans la barre d'adresse).

Autre contrainte : Je dois utiliser POST pour lui passer les données (pas de GET possible)

Y a t-il une solution ?

Posté

déjà, "Location:" = requête GET, pas le choix.

Après coté fsockopen, je ne vois pas le rapport avec ton "Location", mais avec ça tu peux parfaitement générer du POST ou tout autre type de requête.

Si ça te semble trop complexe, tu peux aussi utiliser curl.

Posté

J'ai pas tout suivi, mais si tu veux que ce soit le browser de l'utilisateur qui fasse ce POST, la seule soution c'est une page HTML qui contient le formulaire avec toutes les données et un bout de JS pour faire un mon_formulaire.submit();

Si ça n'a pas d'importance que ce soit toi ou l'utilisateur qui fasse ce POST, tu peux le faire depuis ton serveur via curl ou fsockopen.

Jacques.

Posté

Oui je sais que je peux simuler un Submit en Javascript mais je trouve que ce n'est pas propre.

C'est pour passer sur un module de banque pour un paiement en ligne et donc il faut des choses très transparentes et claires pour le visiteur.

Bon, si je ne peux faire l'équivalent d'un Header Location avec passage de données en POST, je vais rajouter une page de confirmation.

Posté

J'ai regardé curl, mais il ne permet rien de plus que ce qu'on peut faire à

la main avec fsockopen : on peut passer des params en POST, on *lit* l'url

cible mais on reste sur l'url du script appelant.

J'ai bien trouvé "header location" en code 307, apparamment le seul qui

transmet les POST mais cela génére un message de confirmation sur les

navigateurs et le fonctionnement n'est pas garanti en http 1.0.

C'est amusant : je ne m'étais jamais rendu compte qu'il était impossible de passer à la main des paramètres en POST.

Posté
J'ai regardé curl, mais il ne permet rien de plus que ce qu'on peut faire à la main avec fsockopen

Encore heureux ! fsockopen() te permet "d'implémenter" le protocole HTTP à 100% (ainsi que beaucoup d'autres protocoles d'ailleurs).

La grosse différence c'est que curl() est évidement beaucoup plus simple d'utilisation car de nombreuses choses sont déjà implémentées, telles que le HTTPS, la gestion des cookies et le suivi des redirections par exemple.

Dans tous les cas je ne vois pas où est le problème... à moins que je n'ai pas compris ce que tu cherches à faire.

C'est amusant : je ne m'étais jamais rendu compte qu'il était impossible de passer à la main des paramètres en POST.

Oui... comme toute requête HTTP. Mais il est normalement plus difficile de forcer un navigateur à générer un POST qu'un GET.

Posté
Dans tous les cas je ne vois pas où est le problème... à moins que je n'ai pas compris ce que tu cherches à faire.

:)

Ce que je cherche à faire est assez simple : l'équivalent d'un header location avec passage des params en POST.

Maintenant que je sais que ce n'est pas possible, je vais faire en sorte de m'en passer... Ce n'est pas bien grave. :P

Posté

Bah ce n'est pas possible de manière 100% identique non, ça c'est sûr et certain.

Maintenant si tu te contrefiches de l'IP qui soumet le formulaire, un script PHP qui déclenche la même chose en curl/fsockopen fait parfaitement l'affaire. Mais dans ce cas, je vois pas bien où est le soucis...

Posté

Tu cherches à créer un lien vers une page de formulaire, si j'ai bien compris.

Si c'est bien ça, pourquoi ne pas créer un formulaire masqué (tous les champs en hidden), et de modifier le look du bouton submit via CSS pour qu'il ait l'air d'un lien ?

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...