web-dev-qa-db-fra.com

Différence entre wp_remote_post et wp_safe_remote_post

La documentation pour wp_remote_postdit

Dans de nombreux cas, vous serez peut-être mieux servi avec wp_safe_remote_post

En regardant le code source, la seule ligne qui soit différente entre les deux est que wp_safe_remote_post a ceci: $args['reject_unsafe_urls'] = true;

Cet article est la meilleure explication que j'ai trouvée, ce qui semble indiquer que le seul cas où je devrais utiliser wp_remote_post est le moment où je passe un appel distant à mon propre site.

Donc, y a-t-il une autre situation dans laquelle je voudrais utiliser wp_remote_post ou dois-je toujours rester avec wp_safe_remote_post?

3
Sam Schneider

Donc, y a-t-il une autre situation dans laquelle je voudrais utiliser wp_remote_post ou devrais-je toujours rester avec wp_safe_remote_post?

Les deux fonctions sont exactement les mêmes, sauf que wp_safe_remote_post() définit l'argument reject_unsafe_urls sur true. Cet argument entraîne le passage de l'URL par le biais de wp_http_validate_url() in WP_Http::request() .

Dans cette fonction, nous voyons qu'il existe quelques cas d'utilisation où vous auriez besoin d'utiliser wp_remote_post() au lieu de wp_safe_remote_post().

  1. Si vous utilisez un protocole autre que http ou https. *
  2. Si vous devez transmettre un utilisateur ou indiquez l’URL.
  3. Si vous publiez sur l'hôte local. **
  4. Si vous devez utiliser un port autre que 80, 443 ou 8080.

Il est également possible d'utiliser le filtre http_request_reject_unsafe_urls pour transmettre des URL via wp_http_validate_url() dans une requête HTTP, que wp_safe_remote_post() ou wp_remote_post() soit appelé.

[*] Si reject_unsafe_urls n'est pas défini, l'URL est toujours transmise si wp_kses_bad_protocol() et les protocoles autorisés sont http, https et ssl.

[**] Il est possible d'utiliser wp_safe_remove_post() avec l'hôte local en utilisant le filtre http_request_Host_is_external et en renvoyant une valeur de vérité.

1
Nathan Johnson

les fonctionsSAFEsont en quelque sorte une tentative tardive d’assainissement en entrée, ce qui aurait dû se produire bien avant que le code n’ait atteint ce stade. (à ce stade, la demande échouera sans aucune possibilité d'informer un utilisateur qu'il existe un problème de configuration qu'il doit résoudre).

Vous devriez probablement toujours les utiliser et être prêt à gérer les situations dans lesquelles ils échouent du fait que vous essayez d'accéder à tout ce qui n'a pas un format "basique" et utilise les numéros de port les plus courants.

2
Mark Kaplun

Quelle question? Vous avez trouvé toutes les informations intéressées.

wp_safe_remote_post() function comment dit

Récupérez la réponse brute d'une requête HTTP sécurisée à l'aide de la méthode POST. Cette fonction est idéale lorsque la requête HTTP est adressée à une URL arbitraire. L'URL est validée pour éviter les redirections et les attaques par falsification.

Je pense que devrait toujours utiliser wp_safe_remote_post. C'est sur.

0
Maxim Sarandi