{"id":231992,"date":"2022-12-29T10:35:00","date_gmt":"2022-12-29T07:35:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=231992"},"modified":"2022-12-29T10:36:10","modified_gmt":"2022-12-29T07:36:10","slug":"invio-di-intestazioni-di-autorizzazione-con-wordpress","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/it\/invio-di-intestazioni-di-autorizzazione-con-wordpress\/","title":{"rendered":"Invio di intestazioni di autorizzazione con WordPress"},"content":{"rendered":"<p>Ogni volta che effettuiamo richieste remote con WordPress, probabilmente utilizzeremo una delle seguenti funzioni:<\/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\/it\/richieste-remote-con-wp_safe_remote_get\/\" title=\"wp_safe_remote_get\">wp_safe_remote_get<\/a><\/li>\n<\/ul>\n<p>E, s\u00ec, a volte useremo <a href=\"https:\/\/wordpress.mediadoma.com\/it\/la-differenza-nelle-richieste-curl-e-wordpress\/\" title=\"cURL\">cURL<\/a> a seconda della natura del progetto, ma questo \u00e8 al di fuori del contenuto di questo post.<\/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=\"Invio di intestazioni di autorizzazione con WordPress\"><\/a><\/p>\n<p>Per questo articolo, voglio parlare in modo specifico della creazione di richieste remote e della specifica delle intestazioni rispetto a un&#8217;API di terze parti.<\/p>\n<h2>Intestazioni di autorizzazione con WordPress<\/h2>\n<p>Ogni volta che si tratta di fare richieste asincrone con WordPress, il processo spesso va cos\u00ec:<\/p>\n<ol>\n<li>Configura la funzione JavaScript per effettuare una chiamata lato server (con un <a href=\"https:\/\/codex.wordpress.org\/WordPress_Nonces\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">nonce<\/a> sicuro, ovviamente),<\/li>\n<li>Far eseguire la richiesta lato server utilizzando una delle suddette funzioni,<\/li>\n<li>Restituire la risposta sotto forma di messaggio di <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_send_json_success\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">successo<\/a> o di <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_send_json_error\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">errore<\/a> ,<\/li>\n<li>Fai in modo che il JavaScript lato client gestisca la risposta in qualsiasi modo sembri appropriato in base alla risposta.<\/li>\n<\/ol>\n<p>Ma cosa succede se la richiesta API che devi effettuare dal server richiede qualcosa di pi\u00f9 di un endpoint di base con pochi parametri?<\/p>\n<p>Pi\u00f9 specificamente, cosa succede se quello che stai scrivendo richiede che tu fornisca un qualche tipo di autorizzazione per il tuo lavoro? Fortunatamente, WordPress ci consente di impostare intestazioni che risolvono esattamente questo.<\/p>\n<p>Se vuoi implementare qualcosa del genere, suppongo che il tipo di contenuto sar\u00e0 quello di JSON e che l&#8217;autorizzazione sar\u00e0 un qualche tipo di token (tuttavia, la tua implementazione potrebbe variare in base al sistema con cui stai Lavorando).<\/p>\n<p>In questo caso, il mio token sar\u00e0 semplicemente identificato come <strong>$token.<\/strong> Ed ecco <a href=\"https:\/\/gist.github.com\/tommcfarlin\/b0050a06f124f9884b22426b1bd51989\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">un semplice esempio:<\/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>Qualcosa che vale la pena notare<\/h2>\n<p>Se il tuo host \u00e8 in esecuzione su Apache e questo tipo di richiesta non funziona, probabilmente dovrai aggiornare il tuo <code>htaccess<\/code>file in modo che includa la seguente regola: <code>SetEnvIf Authorization \"(.*)\" HTTP_AUTHORIZATION=$1<\/code>.<\/p>\n<p>Complimenti a <a href=\"https:\/\/ggwi.cz\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">George<\/a> per avermi messo in contatto con quello.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Fonte di registrazione:  <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 esempio su come inviare l&#8217;autorizzazione con WordPress, le sue API integrate e qualsiasi modifica al server Web che potresti dover apportare.<\/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":[918,896,720,844,865],"tags":[1168],"class_list":["post-231992","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-altro","category-codice","category-sviluppatore","category-tutorial","category-wordpress-6","tag-affiai-it"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231992","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/comments?post=231992"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/posts\/231992\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media\/237098"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/media?parent=231992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/categories?post=231992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/it\/wp-json\/wp\/v2\/tags?post=231992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}