Ugradnja portala u drugu veb-lokaciju koristeći iframe

Jedan od najčešćih načina korišćenja aplikacija portala je ugrađivanje funkcionalnosti portala u drugu veb-lokaciju. Obično druga veb-lokacija već postoji, ali želite da poboljšate njene sposobnosti i dodate nove funkcije koje rade sa vašim podacima koji se pojavljuju kroz aplikaciju portala.

U ovom scenariju lakše je ugraditi funkcionalnost portala nego ga izgraditi od nule. Ovaj članak objašnjava korake za ugradnju aplikacije portala u drugu veb-lokaciju koristeći iframe.

Korak 1. Omogućavanje portala za iframe

Iframe je podrazumevano onemogućen na novim portalima, kako biste bili sigurni da niko ne može da ugradi vašu aplikaciju portala eksterno i pokuša da izvrši klikdžeking napade.

  1. Podešavanje zaglavlja HTTP odgovora. Možete odabrati ili Content-Security-Policy (CSP) frame-ancestors direktivu (preporučeno) ili X-Frame-Options.

    Napomena

    Content-Security-Policy frame-ancestors ima prethodne X-Frame-Options, a predstavlja metod opisan u ovom članku.

    1. Podesite podešavanje veb-lokacije tako da omogućite HTTP zaglavlje HTTP/Content-Security-Policy. Još informacija: Podešavanje HTTP zaglavlja u portalima

    2. Pratite sintaksu opisanu u CSP: frame-ancestors da biste podesili vrednost.

      Na primer, da biste omogućili portal koji se može ugraditi koristeći iframe na veb-lokaciji www.contoso.com, podešavanje će izgledati ovako:

      Content-Security-Policy: frame-ancestors 'self' <https://www.contoso.com>;

      Napomena

      Niska 'self' je važna. Bez nje portal neće moći da ugradi sopstvene stranice, što je obično obavezno u scenarijima kao što su modalni iskačući meniji za osnovne obrasce.

      Važno je ograničiti mogućnost ugrađivanja portala u iframe na određene lokacije, umesto da koristite džoker znak (*).

      CSP se sastoji od brojnih direktiva čije vrednosti zavise od različitih faktora (na primer od mesta učitavanja skripti). Ovaj članak ne pokriva te informacije jer se odnosi na implementaciju. Međutim, preporučujemo da prvo testirate ovo podešavanje na neproizvodnom portalu, pogledate greške na konzoli pregledača da biste identifikovali probleme koje morate da rešite i prilagodite podešavanje.

  2. Podesite SameSite podrazumevano na Nijedno za kolačiće portala.

    SameSite atribut za kolačiće je koristan za obezbeđivanje lokacije od napada krivotvorenjem zahteva između lokacija (CSRF). Međutim, to takođe znači da lokacija ne može biti ugrađena u iframe u scenarijima kao kada lokacija zahteva potvrdu identiteta korisnika ili sadrži dinamičke komponente poput obrazaca ili lista.

    Stoga, da biste portal ugradili u iframe, morate podrazumevano da promenite atribut kolačića SameSite za svoj portal u Nijedno. Još informacija: Promena režima SameSite

    Napomena

    Označavanje SameSite kolačića kao Nijedno ne čini vaš portal ranjivim na CSRF napade, jer platforma portala koristi anti-CSRF tokene za sprečavanje ovih napada.

Korak 2. Ugrađivanje portala

Nakon što dovršite prethodni korak, sve što trebate da uradite da biste ugradili iskustvo portala u svoju veb-lokaciju je korišćenje HTML iframe oznake da biste ugradili celu lokaciju ili određene stranice, prema potrebi.

Preporučujemo da naziv domena portala bude prethodnik ili podređeni naziv domena lokacije u koju portal ugrađujete u iframe. Na primer, ako je vaša korenska veb-lokacija www.contoso.com, naziv domena portala bi trebalo da bude portal.contoso.com. Ovo je važno kako bi se osiguralo da kolačići koje koristi portal neće biti klasifikovani kao kolačiće trećih strana i da ih pregledač (blog) blokira. U suprotnom, funkcije poput Captcha i osnovnog/naprednog preusmeravanja obrasca možda neće raditi ispravno. Da biste podesili prilagođeni naziv domena na portalu, idite na Dodavanje prilagođenog naziva domena.

Korak 3. Obrada zaglavlja i podnožja

Možete da izmenite način na koji se zaglavlja i podnožja pojavljuju—ili da li se uopšte pojavljuju—na stranicama ugrađenog portala.

Sprečavanje prikazivanje zaglavlja i podnožja ugrađenog portala

Uobičajeno je da nadređena lokacija na koju želite da ugradite portal već ima zaglavlja i podnožja. U takvim situacijama možda nećete želeti da prikažete zaglavlje i podnožje ugrađenog portala. Razmotrite sledeće scenarije:

  • Kada je ceo portal ugrađen u iframe
    Uklonite sadržaj zaglavlja i podnožja ažuriranjem odgovarajućih veb-predložaka zaglavlja i podnožja.

  • Kada je određena stranica portala ugrađena u iframe
    Obično ne želite da prikazujete zaglavlje ili podnožje portala kada ugrađujete određenu stranicu u veb-lokaciju. Međutim, i dalje želite da zaglavlje i podnožje budu dostupni kada korisnik direktno ode na portal. To možete postići izmenom zaglavlja i podnožja za dinamičko prikazivanje na osnovu sadržaja stranice.

Dodavanje uslovnog koda u zaglavlje i podnožje

Veb-predlošci zaglavlja i podnožja podržavaju potpuna liquid prilagođavanja, tako da možete dodati uslovni kod za prikazivanje određenih svojstava.

Na primer, sledeći kod prikazuje traku za pretragu u zaglavlju ako je stranica bilo šta drugo osim stranice za pretragu.

Važno

Pošto je zaglavlje zajednički element za sve stranice, page.id će se podrazumevano keširati za prvu stranicu koju otvori korisnik. Dakle, ovaj kod koristi oznaku zamene kako bi se osiguralo da ovi elementi neće biti keširani i da će se uvek procenjivati na osnovu trenutne stranice.

{% substitution %}
{% assign current_page = page.id %}
{% assign sr_page = sitemarkers[Search].id %}
{% if current_page == sr_page %}
{% assign section_class = section-landing-search %}
<section class=page_section section-landing-{{ current_page }} {{ section_class | h }} color-inverse\>
    <div class=container\>
        <div class=row \>
            <div class=col-md-12 text-center\>
                {% if current_page == sr_page %}
                    <h1 class=section-landing-heading\>{% editable snippets 'Search/Title' default:resx["Discover_Contoso"] %}\</h1\>
                {% include 'Search' %}
                {% endif %}
            </div\>
        </div\>
    </div\>
</section\>
{% endif %}
{% endsubstitution %}

Alternativno dodavanju uslovnog koda u zaglavlje i podnožje, takođe možete razmotriti sledeće metode. Međutim, ne preporučujemo nijedan pristup; oba imaju ograničenja i nijedno ne podržava potpunu funkcionalnost.

  • Za scenarije samo za čitanje koji ne sadrže nikakve liste ili obrasce, onemogućite zaglavlje i podnožje u predlošku.
  • Koristite poseban šablon za ponovno pisanje (~/Areas/Portal/Pages/Form.aspx).

Takođe pogledajte

Konfigurisanje postavki lokacije za portale
Zamenska oznaka predloška
Omogućavanje izlaznog keširanja zaglavlja i podnožja na portalu
SameSite režim
Podešavanje HTTP zaglavlja u portalima