{"id":228390,"date":"2022-10-23T16:00:00","date_gmt":"2022-10-23T13:00:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=228390"},"modified":"2022-11-09T02:12:40","modified_gmt":"2022-11-08T23:12:40","slug":"fjaerrfoerfraagningar-med-wp_safe_remote_get","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/sv\/fjaerrfoerfraagningar-med-wp_safe_remote_get\/","title":{"rendered":"Fj\u00e4rrf\u00f6rfr\u00e5gningar med wp_safe_remote_get"},"content":{"rendered":"\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/sv\/remote-requests-med-wp_remote_get\/\" title=\"Ig\u00e5r\" >Ig\u00e5r<\/a> delade jag ett inl\u00e4gg om hur man anv\u00e4nder <code>wp_remote_get<\/code>men jag utel\u00e4mnade en alternativ funktion: <code>wp_safe_remote_get<\/code>. Det ursprungliga m\u00e5let var att anv\u00e4nda det f\u00f6rsta inl\u00e4gget f\u00f6r att visa:<\/p>\n<ol>\n<li>Vad den ursprungliga funktionen accepterar,<\/li>\n<li>Hur man anv\u00e4nder den ursprungliga funktionen,<\/li>\n<li>Vad den ursprungliga funktionen returnerar,<\/li>\n<li>Hur en implementering ser ut.<\/li>\n<\/ol>\n<p>Och s\u00e5 t\u00e4nkte jag ta en titt p\u00e5 <code>wp_safe_remote_get<\/code>. Men det finns en utmaning: jag har smarta v\u00e4nner. Strax efter att jag publicerade inl\u00e4gget f\u00e5r jag ett svar fr\u00e5n <a href=\"https:\/\/twitter.com\/royboy789\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Roy<\/a> :<\/p>\n<p>Tack, Roy! (Se till att <a href=\"https:\/\/hiroy.club\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">s\u00e4ga &quot;Hej!&quot;<\/a> till honom. \ud83d\ude42<\/p>\n<p>Men seri\u00f6st, uppf\u00f6ljningen till g\u00e5rdagens inl\u00e4gg \u00e4r just det: <code>wp_safe_remote_get<\/code>. Och det \u00e4r hur du best\u00e4mmer skillnaden mellan de tv\u00e5 funktionerna och n\u00e4r du anv\u00e4nder den ena framf\u00f6r den andra.<\/p>\n<h2>wp_safe_remote_get<\/h2>\n<p>Direkt fr\u00e5n API-dokumenten <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_safe_remote_get\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">l\u00e4r vi oss<\/a> :<\/p>\n<blockquote>\n<p>Denna funktion \u00e4r idealisk n\u00e4r HTTP-beg\u00e4ran g\u00f6rs till en godtycklig URL. Webbadressen \u00e4r validerad f\u00f6r att undvika omdirigering och beg\u00e4ran om f\u00f6rfalskningsattacker.<\/p>\n<\/blockquote>\n<p>Och i likhet med sin motsvarighet accepterar den en URL och en serie argument som kan specificera hur beg\u00e4ran g\u00f6rs.<\/p>\n<p>Dessutom, precis som <code>wp_remote_get<\/code>, returnerar den ocks\u00e5 en upps\u00e4ttning svarsdata eller en instans av <code>WP_Error<\/code>om beg\u00e4ran misslyckas.<\/p>\n<p>Att anv\u00e4nda den h\u00e4r funktionen \u00e4r inte annorlunda \u00e4n att anv\u00e4nda den tidigare, men det v\u00e4cker fr\u00e5gan:<\/p>\n<p>N\u00e4r anv\u00e4nder vi det ena framf\u00f6r det andra? N\u00e4rmare best\u00e4mt, n\u00e4r anv\u00e4nder vi <code>wp_remote_get<\/code>kontra <code>wp_safe_remote_get<\/code>?<\/p>\n<h3>L\u00e4s k\u00e4llan<\/h3>\n<p>N\u00e4r du st\u00e5r inf\u00f6r en s\u00e5dan h\u00e4r situation \u00e4r det f\u00f6rsta b\u00e4sta du kan g\u00f6ra att l\u00e4sa k\u00e4llan:<\/p>\n<ol>\n<li><a href=\"https:\/\/core.trac.wordpress.org\/browser\/tags\/4.7\/src\/wp-includes\/http.php#L168\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\"><code>wp_remote_get<\/code><\/a><\/li>\n<li><a href=\"https:\/\/core.trac.wordpress.org\/browser\/tags\/4.7\/src\/wp-includes\/http.php#L67\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\"><code>wp_safe_remote_get<\/code><\/a><\/li>\n<\/ol>\n<p>Om du l\u00e4ser l\u00e4nkarna ovan kommer du att m\u00e4rka att den senare avvisar de &quot;os\u00e4kra webbadresserna&quot; som best\u00e4ms av <a href=\"https:\/\/developer.wordpress.org\/reference\/functions\/wp_http_validate_url\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">wp_http_validate_url<\/a> genom en serie avancerade kontroller.<\/p>\n<h3>Men \u00e4nd\u00e5, vilken ska jag anv\u00e4nda?<\/h3>\n<p>Detta l\u00e4mnar fortfarande fr\u00e5gan obesvarad, eller hur? Jag tror att det \u00e4r l\u00e4tt att g\u00f6ra det allm\u00e4nna uttalandet att du alltid ska anv\u00e4nda wp_safe_remote_get (eller wp_safe_remote_post, f\u00f6r den delen).<\/p>\n<p>Alla projekt \u00e4r dock olika.<\/p>\n<p>Om du till exempel arbetar med ett plugin som bara kommer att anv\u00e4ndas p\u00e5 ett intran\u00e4t och du har kontroll \u00f6ver till exempel en vitlista med URL som kan skickas in i funktionen, s\u00e5 g\u00e5r det bra att anv\u00e4nda den f\u00f6rra.<\/p>\n<p>Om du d\u00e4remot exponerar den senare f\u00f6r anv\u00e4ndare, anv\u00e4nd alltid den s\u00e4kra versionen av funktionen.<\/p>\n<h2>Kortfattat<\/h2>\n<p>Min tumregel \u00e4r denna (och det liknar sanering):<\/p>\n<p>Om anv\u00e4ndare ska interagera med funktionen, se till att de interagerar med den s\u00e4kraste versionen av koden som m\u00f6jligt.<\/p>\n<p>Annars \u00e4r f\u00f6r mycket i riskzonen.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">Inspelningsk\u00e4lla:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Om du \u00e4r os\u00e4ker p\u00e5 n\u00e4r du ska anv\u00e4nda wp_remote_get eller wp_safe_remote_get, kanske det h\u00e4r inl\u00e4gget hj\u00e4lper dig att avg\u00f6ra n\u00e4r det \u00e4r b\u00e4st.<\/p>\n","protected":false},"author":1,"featured_media":168025,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[901,818,724,868],"tags":[1173],"class_list":["post-228390","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-koda","category-plugins-3","category-utvecklaren","category-wordpress-9","tag-affiai-sv"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228390","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/comments?post=228390"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/posts\/228390\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media\/168025"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/media?parent=228390"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/categories?post=228390"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/sv\/wp-json\/wp\/v2\/tags?post=228390"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}