{"id":231408,"date":"2022-12-29T10:11:00","date_gmt":"2022-12-29T07:11:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231408"},"modified":"2022-12-29T10:12:07","modified_gmt":"2022-12-29T07:12:07","slug":"envio-de-encabezados-de-autorizacion-con-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/es\/envio-de-encabezados-de-autorizacion-con-wordpress\/","title":{"rendered":"Env\u00edo de encabezados de autorizaci\u00f3n con WordPress"},"content":{"rendered":"<p>Siempre que hagamos solicitudes remotas con WordPress, es probable que usemos una de las siguientes funciones:<\/p>\n<ul>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_safe_remote_post\/https:\/\/developer.wordpress.org\/reference\/functions\/wp_remote_post\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_remote_post<\/a><\/li>\n<li><a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_safe_remote_post\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_safe_remote_post<\/a><\/li>\n<li><a href=\"https:\/\/codex.wordpress.org\/Function_Reference\/wp_remote_get\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_remote_get<\/a><\/li>\n<li><a href=\"https:\/\/wordpress.mediadoma.com\/es\/solicitudes-remotas-con-wp_safe_remote_get\/\" title=\"wp_safe_remote_get\">wp_safe_remote_get<\/a><\/li>\n<\/ul>\n<p>Y, s\u00ed, a veces <a href=\"https:\/\/wordpress.mediadoma.com\/es\/la-diferencia-en-las-solicitudes-curl-y-wordpress\/\" title=\"usaremos cURL\">usaremos cURL<\/a> dependiendo de la naturaleza del proyecto, pero eso est\u00e1 fuera del contenido de esta publicaci\u00f3n.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159539-61e6f74b66e53.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-159539-61e6f74b66e53.png\" alt=\"Env\u00edo de encabezados de autorizaci\u00f3n con WordPress\"><\/a><\/p>\n<p>Para este art\u00edculo, quiero hablar espec\u00edficamente sobre c\u00f3mo realizar solicitudes remotas y especificar encabezados contra una API de terceros.<\/p>\n<h2>Encabezados de autorizaci\u00f3n con WordPress<\/h2>\n<p>Siempre que se trata de realizar solicitudes asincr\u00f3nicas con WordPress, el proceso suele ser as\u00ed:<\/p>\n<ol>\n<li>Configure la funci\u00f3n de JavaScript para hacer una llamada al lado del servidor (con un <a href=\"https:\/\/codex.wordpress.org\/WordPress_Nonces\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nonce<\/a> seguro, por supuesto),<\/li>\n<li>Haga que el lado del servidor realice la solicitud utilizando una de las funciones antes mencionadas,<\/li>\n<li>Devuelve la respuesta en forma de mensaje de <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_send_json_success\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">\u00e9xito<\/a> o de <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_send_json_error\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">error ,<\/a><\/li>\n<li>Haga que el JavaScript del lado del cliente maneje la respuesta de cualquier manera que parezca adecuada en funci\u00f3n de la respuesta.<\/li>\n<\/ol>\n<p>Pero, \u00bfqu\u00e9 sucede si la solicitud de API que debe realizar desde el servidor requiere algo m\u00e1s que un punto final b\u00e1sico con algunos par\u00e1metros?<\/p>\n<p>M\u00e1s espec\u00edficamente, \u00bfqu\u00e9 sucede si lo que est\u00e1 escribiendo requiere que proporcione alg\u00fan tipo de autorizaci\u00f3n para su trabajo? Por suerte, WordPress nos permite establecer encabezados que resuelven exactamente esto.<\/p>\n<p>Si desea implementar algo como esto, supondr\u00e9 que el tipo de contenido ser\u00e1 el de JSON y que la autorizaci\u00f3n ser\u00e1 alg\u00fan tipo de token (sin embargo, su implementaci\u00f3n puede variar seg\u00fan el sistema con el que est\u00e9). laboral).<\/p>\n<p>En este caso, mi token simplemente se identificar\u00e1 como <strong>$token.<\/strong> Y aqu\u00ed hay <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b0050a06f124f9884b22426b1bd51989\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">un ejemplo simple:<\/a><\/p>\n<pre><code>&lt;?php\n\n$response = wp_safe_remote_post(\n    $url,\n    [\n        'headers'     =&gt; [\n            'Content-Type'  =&gt; 'application\/json',\n            'Authorization' =&gt; $token\n        ],\n        'body'        =&gt; wp_json_encode($args),\n        'method'      =&gt; 'POST',\n        'data_format' =&gt; 'body',\n    ]\n);<\/code><\/pre>\n<h2>Algo digno de menci\u00f3n<\/h2>\n<p>Si su host se ejecuta en Apache y este tipo de solicitud no funciona, es probable que necesite actualizar su <code>htaccess<\/code>archivo para que incluya la siguiente regla: <code>SetEnvIf Authorization \"(.*)\" HTTP_AUTHORIZATION=$1<\/code>.<\/p>\n<p>Felicidades a <a href=\"https:\/\/ggwi.cz\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">George<\/a> por conectarme con eso.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fuente de grabaci\u00f3n:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Un ejemplo de c\u00f3mo enviar autorizaci\u00f3n con WordPress, sus API integradas y cualquier ajuste del servidor web que pueda necesitar hacer.<\/p>\n","protected":false},"author":1,"featured_media":237098,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[892,716,914,840,861],"tags":[1172],"class_list":["post-231408","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-codigo","category-desarrollador","category-otro","category-tutoriales","category-wordpress-2","tag-affiai-es"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/231408","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/comments?post=231408"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/posts\/231408\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media\/237098"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/media?parent=231408"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/categories?post=231408"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/es\/wp-json\/wp\/v2\/tags?post=231408"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}