✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Mitä WordPressin käyttäminen välityspalvelimena tarkoittaa?

15

Jos olet työskennellyt WordPressin kanssa pitkään, varsinkin kun on kyse jonkin Ajax-toiminnon käytöstä, olet todennäköisesti kuullut lauseen "käytä WordPressiä välityspalvelimena" jossain vaiheessa.

Ja vaikka sinulla ei olisikaan todennäköisyyttä, että olet todella tehnyt sen, ovat melko korkeat.

Vaikka uskonkin, että kun aika kuluu eteenpäin, tulemme lopulta näkemään REST API:n korvaavan perinteiset tavat, joita olemme käyttäneet Ajaxia, mutta se on todennäköisesti eri tarina toisella kerralla.

Mitä WordPressin käyttäminen välityspalvelimena tarkoittaa aina, kun työskentelet Ajax-pyyntöjen kanssa? Se vaatii hieman ymmärrystä sivustojen välisistä pyynnöistä, kuinka pyynnön reititys WordPressin kautta toimii, ja sitten vastauksen jäsentämistä.

Käytä WordPressiä välityspalvelimena

Se on vähän pitkä postaus, eikö? Sen sijaan yritän jakaa sen lyhyemmiksi, jotta voit lukea sen ja palata töihin.

Välityspalvelimena

Ota ensin välityspalvelimen määritelmä :

valtuudet edustaa jotakuta toista, erityisesti äänestäessä

Jos napsautat yllä olevaa linkkiä, huomaat, että on olemassa muutamia muita määritelmiä, mutta mikään niistä ei todellakaan riitä. Sen sijaan haluan ajatella niitä hieman abstraktimmin ainakin ohjelmistojen osalta.

Oletetaan tätä viestiä varten, että WordPress on pyynnön välityspalvelin, mikä tarkoittaa, että se on vastuussa välittäjänä pyynnön alun ja siihen vastauksen välillä.

Lyhyesti,

WordPress toimii välityspalvelimena reitittämällä pyynnön toiseen palveluun ja tallentamalla sen vastauksen.

Ehkä olet kuullut jotain vastaavaa, ehkä et. Siitä huolimatta, tältä se voisi näyttää korkealla tasolla:

Nyt, kun sinun on tehtävä asynkroninen pyyntö (tai Ajax-pyyntö, jota käytän tämän viestin loppuosassa), sinulla on jompikumpi kahdesta vaihtoehdosta:

  1. tehdä pyyntö sivulle, joka on olemassa WordPressissä,
  2. lähetä pyyntö sivulle, joka on toisessa verkkotunnuksessa.

Jos teet pyyntöjä sovelluksessasi (lue: WordPressissä) oleville sivuille, sinulla ei ole ongelmia.

Pyyntöjen turvallisuudesta

Mutta Ajax-pyyntöjen tekeminen oman verkkotunnuksesi ulkopuolella on kiellettyä. Tämä johtuu siitä, että se on tarkoitettu suojaamaan XSS :ää ja CSRF :ää .

Lyhyesti sanottuna jokainen näistä viittaa seuraavaan:

XSS-hyökkäykset tapahtuvat, kun hyökkääjä käyttää verkkosovellusta haitallisen koodin lähettämiseen, yleensä selainpuolen komentosarjan muodossa, toiselle loppukäyttäjälle.

ja:

Cross-Site Request Forgery (CSRF) on hyökkäys, joka pakottaa loppukäyttäjän suorittamaan ei-toivottuja toimintoja verkkosovelluksessa, jossa hän on tällä hetkellä todennettu.

Lyhyesti sanottuna meidän on käytettävä WordPressiä välityspalvelimena. Luonnollisesti tämä kuitenkin herättää kysymyksen, miten?

WordPressin käyttäminen välityspalvelimena

Tätä varten tarvitset useita asioita:

  1.  sivu, jolta Ajax-pyyntösi voi kysyä,
  2. toiminto, joka nappaa ajax-pyynnön ja lähettää sen oikeaan URL-osoitteeseen,
  3. palvelinpuolen tapa jäsentää vastaus,
  4. toiminto palauttaa tiedot alkuperäiseen Ajax-funktioon.

Jälleen tilan vuoksi en anna tästä syvällistä esimerkkiä, mutta sen pitäisi riittää aloittamiseen.

Ensin sinun on varmistettava, että sinulla on toiminto asetettu Ajax-pyyntösi saamiseen. Codexissa on jo paljon dokumentaatiota aiheesta. Yksinkertainen esimerkki tästä näyttäisi tältä:

var _get_columns = function() {

    // Don't forget to use a nonce or security value here.
    var data = {
        'action':   'get_all_columns'
            'security': '<?php echo wp_create_nonce( "acme-security-ajax-nonce" ); ?>'
    };

    // TODO Check for error logging if the response value doesn't exist.
    $.get( ajaxurl, data, function( response) {

        response = $.parseJSON( response );
        // Your custom functionality here
    });
};

Seuraavaksi tarvitset sivun palvelimella tehdäksesi pyynnön tietosi sisältävälle URL-osoitteelle. Tämä voidaan tehdä käyttämällä cURL – osoitetta, tämä voidaan tehdä käyttämällä file_get_contents ja tämä voidaan tehdä jollain muulla tavalla.

Koska en tiedä enkä halua antaa ohjeellista esimerkkiä, jaan hyvin yksinkertaisen demon siitä, miten tämä voisi toimia (ainakin alkuvaiheessa ):

<?php

add_action( 'wp_ajax_get_all_data', 'get_all_data' );
/**
 * Retrieves the requested data from the specified URL 
 * returns the values in JSON.
 */
function get_all_data() {

  // Note $url is up to you.
  $curl = curl_init( $url );

  curl_setopt( $curl, CURLOPT_RETURNTRANSFER, 1 );                         
  curl_setopt( $curl, CURLOPT_HTTPAUTH, CURLAUTH_ANY );                    
  curl_setopt( $curl, CURLOPT_SSL_VERIFYPEER, false );                          
  curl_setopt( $curl, CURLOPT_FOLLOWLOCATION, true );                           

  $response     = curl_exec( $curl );                                          
  $resultStatus = curl_getinfo( $curl );                                   

  if( 200 !== $resultStatus['http_code']) {
    echo 'Call Failed '.print_r( $result_status );                         
  }
  curl_close( $curl );

  echo json_encode( utf8_encode( $response) ); 
  wp_die();
}

Kun saat vastauksen, voit jäsentää sen palvelinpuolella (mitä suosittelen) ja palauttaa sen kevyessä muodossa alkuperäiseen JavaScript-toimintoon, kuten yllä näkyy. Huomaa, että käytän json_encodea yllä olevassa koodissa.

Sieltä voit sitten tehdä mitä tahansa kyseiselle sivulle omistamillasi tiedoilla. Huomaa, että tiedot sisältyvät vastausobjektiin ja sinun on ehkä tarkastettava, mitä se sisältää, jotta voit käsitellä niitä oikein. Tämä onnistuu ja näkyy yllä olevassa koodissa.

Mutta tämän yksityiskohdat riippuvat suuresti siitä, mitä aiot saavuttaa.

WordPress välityspalvelimena

Lopulta ohjausvirta näyttää tältä:

Kaiken edellä olevan tarkoitus on auttaa antamaan taustaa sille, miksi saatat nähdä osan tekemästäsi koodista, ja miksi sinun on rakennettava koodisi tällä tavalla.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja