Az Azure Static Web Apps konfigurálása

Az Azure Static Web Apps konfigurációját a staticwebapp.config.json fájlban határozhatja meg, amely a következő beállításokat szabályozza:

Feljegyzés

routes.json, amelyet korábban az útválasztás konfigurálásához használtak, elavult. A jelen cikkben ismertetett staticwebapp.config.json használatával konfigurálhatja a statikus webalkalmazás útválasztási és egyéb beállításait.

Ez a dokumentum azt ismerteti, hogyan konfigurálható az Azure Static Web Apps, amely önálló termék, és amely nem azonos az Azure Storage statikus webhely-üzemeltetési funkciójával.

Fájl helye

A staticwebapp.config.json ajánlott helye a munkafolyamat-fájlban megadott app_location mappában található. A fájlt azonban bármely almappában elhelyezheti a mappakészleten belül.app_location Emellett, ha van buildelési lépés, győződjön meg arról, hogy a buildelési lépés a fájlt a output_location gyökerének adja ki.

Részletekért tekintse meg a példakonfigurációs fájlt.

Fontos

Az elavult routes.json fájl figyelmen kívül lesz hagyva, ha létezik staticwebapp.config.json .

Útvonalak

A statikus webalkalmazásban egy vagy több útvonalra vonatkozó szabályokat határozhat meg. Az útvonalszabályok lehetővé teszik a felhasználók hozzáférésének korlátozását bizonyos szerepkörökben, vagy műveleteket hajthat végre, például átirányítást vagy átírást. Az útvonalak útválasztási szabályok tömbjeként vannak definiálva. Használati példákért tekintse meg a példakonfigurációs fájlt .

  • A szabályok akkor is definiálva vannak a routes tömbben, ha csak egy útvonal van.
  • A szabályok kiértékelése a tömbben megjelenő sorrendben routes történik.
  • A szabály kiértékelése az első meccsen leáll. Egyezés akkor fordul elő, ha a route tulajdonság és a methods tömb egy értéke (ha meg van adva) megegyezik a kéréssel. Minden kérés legfeljebb egy szabálynak felelhet meg.

Az útválasztási problémák jelentősen átfedésben vannak a hitelesítéssel (a felhasználó azonosításával) és az engedélyezéssel (a felhasználó képességeinek hozzárendelésével) kapcsolatos fogalmakkal. Mindenképpen olvassa el a hitelesítési és engedélyezési útmutatót a cikkel együtt.

Útvonalak definiálása

Minden szabály egy útvonalmintából és egy vagy több választható szabálytulajdonságból áll. Az útvonalszabályok a routes tömbben vannak definiálva. Használati példákért tekintse meg a példakonfigurációs fájlt .

Fontos

A rendszer csak az route és methods (ha megadott) tulajdonságokat használja annak meghatározására, hogy egy szabály megfelel-e egy kérésnek.

Szabálytulajdonság Kötelező Alapértelmezett érték Megjegyzés
route Igen n.a. A hívó által kért útvonalminta.
  • A helyettesítő karakterek az útvonalvonalak végén támogatottak.
    • A /admin* útvonal például megfelel a /admin kezdetű útvonalaknak.
methods Nem Minden metódus Egy útvonalnak megfelelő kérési metódusok tömbjének definiálása. Az elérhető módszerek a következők: GET, HEAD, POST, PUT, DELETE, CONNECTOPTIONS, TRACE, és PATCH.
rewrite Nem n.a. Meghatározza a kérelemből visszaadott fájlt vagy elérési utat.
  • Ez kölcsönösen kizárja a szabályt redirect .
  • Az átírási szabályok nem módosítják a böngésző helyét.
  • Az értékeknek az alkalmazás gyökeréhez viszonyítva kell lenniük.
redirect Nem n.a. Meghatározza egy kérés fájl- vagy útvonalátirányítási célját.
  • Ez kölcsönösen kizárja a szabályt rewrite .
  • Az átirányítási szabályok megváltoztatják a böngésző helyét.
  • Az alapértelmezett válaszkód egy 302 (ideiglenes átirányítás), de felülbírálható egy 301 (állandó átirányítással).
statusCode Nem 301 vagy 302 átirányítások esetén A válasz HTTP-állapotkódja .
headers Nem n.a. A válaszhoz hozzáadott HTTP-fejlécek készlete.
  • Az útvonalspecifikus fejlécek felülbírálhatók globalHeaders , ha az útvonalspecifikus fejléc megegyezik a válaszban szereplő globális fejléccel.
  • Fejléc eltávolításához állítsa az értéket üres sztringre.
allowedRoles Nem Névtelen Egy útvonal eléréséhez szükséges szerepkörnevek tömbjének meghatározása.
  • Az érvényes karakterek a következők: a-z, A-Z, 0-9és _.
  • A beépített szerepkör anonymousminden felhasználóra érvényes.
  • A beépített szerepkör authenticatedminden bejelentkezett felhasználóra vonatkozik.
  • A felhasználóknak legalább egy szerepkörhöz kell tartoznia.
  • A szerepkörök vagy azok alapján vannak megfeleltetve.
    • Ha egy felhasználó a felsorolt szerepkörök bármelyikében szerepel, akkor a hozzáférés meg lesz adva.
  • Az egyes felhasználók meghívókkal vannak társítva a szerepkörökhöz.

Minden tulajdonságnak meghatározott célja van a kérési/válaszfolyamatban.

Cél Tulajdonságok
Útvonalak egyeztetése route, methods
Folyamat egy szabály egyeztetése és engedélyezése után rewrite (módosítja a kérést)

redirect, headers, statusCode (módosítja a választ)
Engedélyezés egy útvonal egyeztetése után allowedRoles

Útvonalminták megadása

A route tulajdonság lehet pontos útvonal vagy helyettesítő karakterminta.

Pontos útvonal

Pontos útvonal meghatározásához helyezze a fájl teljes elérési útját a route tulajdonságba.

{
  "route": "/profile/index.html",
  "allowedRoles": ["authenticated"]
}

Ez a szabály megegyezik a /profile/index.html fájlra vonatkozó kérésekkel. Mivel index.html az alapértelmezett fájl, a szabály a mappa (/profil vagy /profile/) kéréseinek is megfelel.

Fontos

Ha mappaelérési utat (/profilevagy /profile/) használ a route tulajdonságban, az nem egyezik a /profile/index.html fájlra vonatkozó kérésekkel. A fájlokat kiszolgáló útvonalak védelmekor mindig használja a fájl teljes elérési útját, például /profile/index.html.

Helyettesítő karakterminta

A helyettesítő karakterek szabályai megegyeznek az útvonalmintában szereplő összes kéréssel, és csak az elérési út végén támogatottak. Használati példákért tekintse meg a példakonfigurációs fájlt .

Egy naptáralkalmazás útvonalainak implementálásához például átírhatja a naptár útvonalához tartozó összes URL-címet egyetlen fájl kiszolgálásához.

{
  "route": "/calendar*",
  "rewrite": "/calendar.html"
}

A calendar.html fájl ezután ügyféloldali útválasztással egy másik nézetet jeleníthet meg az OLYAN URL-változatokhoz, mint a /calendar/january/1, /calendar/2020és /calendar/overview.

Feljegyzés

Az útvonalminta megegyezik /calendar/* a /calendar/ elérési út összes kérésével. Ez azonban nem egyezik a /naptár vagy a /calendar.html elérési utakra vonatkozó kérésekkel. A /calendar kezdetű kérések egyeztetésére használható/calendar*.

A helyettesítő karakterek találatai fájlkiterjesztés szerint szűrhetők. Ha például olyan szabályt szeretne hozzáadni, amely csak egy adott elérési úton lévő HTML-fájlokkal egyezik, a következő szabályt hozhatja létre:

{
  "route": "/articles/*.html",
  "headers": {
    "Cache-Control": "public, max-age=604800, immutable"
  }
}

Ha több fájlkiterjesztésre szeretne szűrni, a lehetőségeket kapcsos zárójelek közé kell foglalnia, ahogyan az ebben a példában látható:

{
  "route": "/images/thumbnails/*.{png,jpg,gif}",
  "headers": {
    "Cache-Control": "public, max-age=604800, immutable"
  }
}

A helyettesítő karakterek útvonalainak gyakori felhasználási esetei a következők:

  • Egy adott fájl teljes elérésiút-mintához való kiszolgálása
  • Hitelesítési és engedélyezési szabályok kényszerítése
  • Speciális gyorsítótárazási szabályok implementálása

Biztonságos útvonalak szerepkörökkel

Az útvonalakat egy vagy több szerepkörnév szabálytömbbe való hozzáadásával biztosítjuk allowedRoles . Használati példákért tekintse meg a példakonfigurációs fájlt .

Fontos

Az útválasztási szabályok csak a statikus webalkalmazásokból kiszolgált útvonalakra irányuló HTTP-kéréseket tudják biztonságossá tenni. Számos előtér-keretrendszer ügyféloldali útválasztást használ, amely módosítja az útvonalakat a böngészőben anélkül, hogy kéréseket ad meg a Static Web Appsnek. Az útválasztási szabályok nem védik az ügyféloldali útvonalakat. Az ügyfeleknek HTTP API-kat kell hívniuk a bizalmas adatok lekéréséhez. Az adatok visszaadása előtt győződjön meg arról, hogy az API-k ellenőrzik a felhasználó identitását .

Alapértelmezés szerint minden felhasználó a beépített anonymous szerepkörhöz tartozik, és minden bejelentkezett felhasználó a authenticated szerepkör tagja. Ha szeretné, a felhasználók meghívókon keresztül egyéni szerepkörökhöz vannak társítva.

Ha például egy útvonalat csak hitelesített felhasználókra szeretne korlátozni, adja hozzá a beépített authenticated szerepkört a allowedRoles tömbhöz.

{
  "route": "/profile*",
  "allowedRoles": ["authenticated"]
}

Szükség szerint létrehozhat új szerepköröket a allowedRoles tömbben. Ha csak rendszergazdákra szeretne korlátozni egy útvonalat, megadhatja a saját szerepkörét administratora allowedRoles tömbben.

{
  "route": "/admin*",
  "allowedRoles": ["administrator"]
}
  • Teljes körűen szabályozhatja a szerepkörneveket; nincs olyan lista, amelyhez a szerepköröknek meg kell felelnie.
  • Az egyes felhasználók meghívókkal vannak társítva a szerepkörökhöz.

Fontos

A tartalom védelmekor lehetőség szerint adja meg a pontos fájlokat. Ha sok fájlt szeretne biztonságossá tenni, használjon helyettesítő karaktereket egy megosztott előtag után. Például: /profile* biztonságossá teszi a /profillal kezdődő összes lehetséges útvonalat, beleértve a /profile-t is.

A teljes alkalmazáshoz való hozzáférés korlátozása

Gyakran szeretne hitelesítést igényelni az alkalmazás minden útvonalához. Az útvonalak zárolásához adjon hozzá egy olyan szabályt, amely megfelel az összes útvonalnak, és tartalmazza a beépített authenticated szerepkört a allowedRoles tömbben.

Az alábbi példakonfiguráció letiltja a névtelen hozzáférést, és átirányítja az összes nem hitelesített felhasználót a Microsoft Entra bejelentkezési oldalára.

{
  "routes": [
    {
      "route": "/*",
      "allowedRoles": ["authenticated"]
    }
  ],
  "responseOverrides": {
    "401": {
      "statusCode": 302,
      "redirect": "/.auth/login/aad"
    }
  }
}

Feljegyzés

Alapértelmezés szerint az összes előre konfigurált identitásszolgáltató engedélyezve van. A hitelesítésszolgáltató letiltásához tekintse meg a hitelesítést és az engedélyezést.

Tartalék útvonalak

Az egyoldalas alkalmazások gyakran ügyféloldali útválasztásra támaszkodnak. Ezek az ügyféloldali útválasztási szabályok anélkül frissítik a böngésző ablakának helyét, hogy kéréseket küldenének vissza a kiszolgálóra. Ha frissíti a lapot, vagy közvetlenül az ügyféloldali útválasztási szabályok által létrehozott URL-címekre lép, kiszolgálóoldali tartalék útvonal szükséges a megfelelő HTML-lap kiszolgálásához. A tartalék lap gyakran index.html az ügyféloldali alkalmazáshoz.

A tartalék szabályt szakasz navigationFallback hozzáadásával határozhatja meg. Az alábbi példa /index.html ad vissza minden olyan statikus fájlkéréshez, amely nem egyezik az üzembe helyezett fájllal.

{
  "navigationFallback": {
    "rewrite": "/index.html"
  }
}

Egy szűrő definiálásával szabályozhatja, hogy mely kérések küldik vissza a tartalék fájlt. Az alábbi példában a /images mappában lévő egyes útvonalakra és a /css mappában lévő összes fájlra vonatkozó kérések nem térnek vissza a tartalék fájlhoz.

{
  "navigationFallback": {
    "rewrite": "/index.html",
    "exclude": ["/images/*.{png,jpg,gif}", "/css/*"]
  }
}

Például a következő könyvtárstruktúra esetén a fenti navigációs tartalék szabály az alábbi táblázatban részletezett eredményeket eredményezné.

├── images
│   ├── logo.png
│   ├── headshot.jpg
│   └── screenshot.gif
│
├── css
│   └── global.css
│
└── index.html
Kérések... Visszatér... állapottal...
/névjegy/ A /index.html fájl. 200
/images/logo.png A képfájl. 200
/images/icon.svg A /index.html fájl – mivel az svg fájlkiterjesztés nem szerepel a /images/*.{png,jpg,gif} szűrőben. 200
/images/unknown.png A fájl nem található hiba. 404
/css/unknown.css A fájl nem található hiba. 404
/css/global.css A stíluslapfájl. 200
Bármely más fájl a /images vagy /css mappákon kívül A /index.html fájl. 200

Fontos

Ha az elavult routes.json fájlból migrál, ne foglalja bele az örökölt tartalék útvonalat ("route": "/*") az útválasztási szabályokba.

Globális fejlécek

A globalHeaders szakasz az egyes válaszokra alkalmazott HTTP-fejléceket tartalmazza, kivéve, ha egy útvonalfejléc-szabály felül van bírálva, ellenkező esetben az útvonal fejléceinek és a globális fejléceknek az egyesítése lesz visszaadva.

Használati példákért tekintse meg a példakonfigurációs fájlt .

Élőfej eltávolításához állítsa az értéket üres sztringre ("").

A globális fejlécek gyakori használati esetei a következők:

  • Egyéni gyorsítótárszabályok
  • Biztonsági házirendek
  • Kódolási beállítások
  • Forrásközi erőforrásmegosztás (CORS) konfigurációja

Az alábbi példa egy egyéni CORS-konfigurációt valósít meg.

{
  "globalHeaders": {
    "Access-Control-Allow-Origin": "https://example.com",
    "Access-Control-Allow-Methods": "POST, GET, OPTIONS"
  }
}

Feljegyzés

A globális fejlécek nem befolyásolják az API-válaszokat. Az API-válaszok fejlécei megmaradnak, és visszakerülnek az ügyfélhez.

Válasz felülbírálások

A responseOverrides szakasz lehetőséget biztosít egyéni válasz megadására, ha a kiszolgáló egyébként hibakódot ad vissza. Használati példákért tekintse meg a példakonfigurációs fájlt .

A felülbíráláshoz a következő HTTP-kódok érhetők el:

Állapotkód Értelmezés Lehetséges ok
400 Hibás kérés Érvénytelen meghívási hivatkozás
401 Nem engedélyezett Kérelem korlátozott oldalakra hitelesítés nélküli állapotban
403 Forbidden
  • A felhasználó bejelentkezett, de nem rendelkezik a lap megtekintéséhez szükséges szerepkörökkal.
  • A felhasználó bejelentkezett, de a futtatókörnyezet nem tudja lekérni a felhasználó adatait az identitás jogcímeiből.
  • Túl sok felhasználó jelentkezett be a webhelyre egyéni szerepkörökkel, ezért a futtatókörnyezet nem tud bejelentkezni a felhasználóba.
404 Nem található A fájl nem található

Az alábbi példakonfiguráció bemutatja, hogyan lehet felülbírálni egy hibakódot.

{
  "responseOverrides": {
    "400": {
      "rewrite": "/invalid-invitation-error.html"
    },
    "401": {
      "statusCode": 302,
      "redirect": "/login"
    },
    "403": {
      "rewrite": "/custom-forbidden-page.html"
    },
    "404": {
      "rewrite": "/custom-404.html"
    }
  }
}

Platform

A platform szakasz a platformspecifikus beállításokat vezérli, például az API nyelvi futtatókörnyezetének verzióját.

Válassza ki az API nyelvi futtatókörnyezetének verzióját

Az API nyelvi futtatókörnyezeti verziójának konfigurálásához állítsa apiRuntime a platform szakaszban található tulajdonságot az alábbi támogatott értékek egyikére.

Nyelvi futtatókörnyezet verziója Operációs rendszer Azure Functions-verzió apiRuntime Érték Támogatási dátum vége
.NET Core 3.1 Windows 3.x dotnet:3.1 2022. december 3., szombat
.NET 6.0 folyamatban Windows 4.x dotnet:6.0 -
.NET 6.0 izolált Windows 4.x dotnet-isolated:6.0 -
.NET 7.0 izolált Windows 4.x dotnet-isolated:7.0 -
.NET 8.0 izolálva Windows 4.x dotnet-isolated:8.0 -
Node.js 12.x Linux 3.x node:12 2022. december 3., szombat
Node.js 14.x Linux 4.x node:14 -
Node.js 16.x Linux 4.x node:16 -
Node.js 18.x Linux 4.x node:18 -
Python 3.8 Linux 4.x python:3.8 -
Python 3.9 Linux 4.x python:3.9 -
Python 3.10 Linux 4.x python:3.10 -

.NET

Ha módosítani szeretné a futtatókörnyezet verzióját egy .NET-alkalmazásban, módosítsa a TargetFramework csproj fájl értékét. Ha nem kötelező, ha a staticwebapp.config.json fájlban állít be értéketapiRuntime, győződjön meg arról, hogy az érték megegyezik a csproj-fájlban definiált értékkel.

Az alábbi példa bemutatja, hogyan frissítheti a TargetFramework NET 8.0 elemet API nyelvi futtatókörnyezeti verzióként a csproj fájlban.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>net8.0</TargetFramework>
    ...
  </PropertyGroup>
...

Node.js

Az alábbi példakonfiguráció bemutatja, hogyan használhatja a tulajdonságot a apiRuntime Node.js 16 api nyelvi futtatókörnyezeti verzióként való kiválasztására a staticwebapp.config.json fájlban.

{
  ...
  "platform": {
    "apiRuntime": "node:16"
  }
  ...
}

Python

Az alábbi példakonfiguráció bemutatja, hogyan használhatja a tulajdonságot a apiRuntime Python 3.8 api nyelvi futtatókörnyezeti verziójának kiválasztására a staticwebapp.config.json fájlban.

{
  ...
  "platform": {
    "apiRuntime": "python:3.8"
  }
  ...
}

Hálózat

A networking szakasz a statikus webalkalmazás hálózati konfigurációját szabályozza. Az alkalmazáshoz való hozzáférés korlátozásához adja meg az engedélyezett IP-címblokkok listáját a következőben allowedIpRanges: . Az engedélyezett IP-címblokkok számáról további információt az Azure Static Web Apps kvótái című témakörben talál.

Feljegyzés

A hálózati konfiguráció csak az Azure Static Web Apps Standard csomagban érhető el.

Definiálja az egyes IPv4-címblokkokat az osztály nélküli tartományközi útválasztás (CIDR) jelölésében. A CIDR jelöléséről további információt az Osztály nélküli tartományközi útválasztás című témakörben talál. Minden IPv4-címblokk jelölhet nyilvános vagy privát címteret. Ha csak egyetlen IP-címről szeretné engedélyezni a hozzáférést, használhatja a /32 CIDR-blokkot.

{
  "networking": {
    "allowedIpRanges": [
      "10.0.0.0/24",
      "100.0.0.0/32",
      "192.168.100.0/22"
    ]
  }
}

Ha egy vagy több IP-címblokk van megadva, a rendszer megtagadja a hozzáférést az olyan IP-címekről érkező kérelmekhez, amelyek nem egyeznek meg egy értékkel allowedIpRanges .

Az IP-címblokkok mellett szolgáltatáscímkéket is megadhat a tömbben az allowedIpRanges egyes Azure-szolgáltatások felé irányuló forgalom korlátozásához.

"networking": {
  "allowedIpRanges": ["AzureFrontDoor.Backend"]
}

Hitelesítés

Az útvonalak hitelesített felhasználókra való korlátozásával kapcsolatos részletekért lásd : Útvonalak védelme szerepkörökkel.

Gyorsítótár letiltása hitelesített elérési utak esetén

Ha manuális integrációt állít be az Azure Front Doorral, érdemes lehet letiltani a gyorsítótárazást a biztonságos útvonalakhoz. Ha engedélyezve van a nagyvállalati szintű peremhálózat , a gyorsítótárazás már le van tiltva a biztonságos útvonalakon.

Ha le szeretné tiltani az Azure Front Door gyorsítótárazását a biztonságos útvonalakhoz, adja hozzá "Cache-Control": "no-store" az útvonal fejlécdefiníciójához.

Példa:

{
    "route": "/members",
    "allowedRoles": ["authenticated, members"],
    "headers": {
        "Cache-Control": "no-store"
    }
}

Továbbítási átjáró

A forwardingGateway szakasz konfigurálja, hogy a statikus webalkalmazások hogyan férnek hozzá egy továbbítási átjáróról, például egy Tartalomkézbesítési hálózatból (CDN) vagy az Azure Front Doorból.

Feljegyzés

Az átjárókonfiguráció továbbítása csak az Azure Static Web Apps Standard csomagban érhető el.

Engedélyezett továbbított gazdagépek

A allowedForwardedHosts lista megadja, hogy az X-Forwarded-Host fejlécben mely gazdagépneveket fogadja el. Ha egyező tartomány szerepel a listában, a Static Web Apps az átirányítási URL-címek létrehozásakor használja az X-Forwarded-Host értéket, például egy sikeres bejelentkezés után.

Ahhoz, hogy a Statikus Web Apps megfelelően működjön a továbbítási átjáró mögött, az átjáró kérésének tartalmaznia kell a fejlécben a X-Forwarded-Host megfelelő állomásnevet, és ugyanazt a gazdagépnevet kell szerepeltetni a allowedForwardedHostslistában.

"forwardingGateway": {
  "allowedForwardedHosts": [
    "example.org",
    "www.example.org",
    "staging.example.org"
  ]
}

Ha a X-Forwarded-Host fejléc nem egyezik meg a listában szereplő értékkel, a kérések továbbra is sikeresek maradnak, de a fejléc nem szerepel a válaszban.

Szükséges fejlécek

A szükséges fejlécek HTTP-fejlécek, amelyeket minden kéréssel el kell küldeni a webhelyre. A szükséges fejlécek egyik használata a webhelyhez való hozzáférés megtagadása, kivéve, ha az összes szükséges fejléc megtalálható az egyes kérésekben.

Az alábbi konfiguráció például bemutatja, hogyan adhat hozzá egyedi azonosítót az Azure Front Doorhoz, amely korlátozza a webhelyhez való hozzáférést egy adott Azure Front Door-példányból. A részletekért tekintse meg az Azure Front Door konfigurálása oktatóanyagot .

"forwardingGateway": {
  "requiredHeaders": {
    "X-Azure-FDID" : "692a448c-2b5d-4e4d-9fcc-2bc4a6e2335f"
  }
}
  • A kulcs/érték párok tetszőleges sztringek tetszőleges készletei lehetnek
  • A kulcsok nem érzékenyek a kis- és nagybetűkre
  • Az értékek megkülönböztetik a kis- és nagybetűket

Záró perjel

A záró perjel az / URL-cím végén található. A záró perjelES URL-cím hagyományosan a webkiszolgáló egyik könyvtárára utal, míg a nem perjel egy fájlra utal.

A keresőmotorok külön kezelik a két URL-címet, függetlenül attól, hogy fájlról vagy könyvtárról van-e szó. Ha mindkét URL-címen ugyanaz a tartalom jelenik meg, a webhely duplikált tartalmat jelenít meg, ami negatívan befolyásolhatja a keresőmotorok optimalizálását (Standard kiadás O). Ha explicit módon van konfigurálva, a Static Web Apps URL-normalizálási és átirányítási szabályokat alkalmaz, amelyek javítják a webhely teljesítményét és Standard kiadás O-t.

Az alábbi normalizálási és átirányítási szabályok vonatkoznak az egyes elérhető konfigurációkra:

Mindig

Amikor ezt állítja trailingSlashalwaysbe, a záró perjelet nem tartalmazó kérések egy záró perjel URL-címre lesznek átirányítva. Például /contact a rendszer átirányítja a következőre /contact/: .

"trailingSlash": "always"
Kérések... Visszatér... állapottal... és elérési út...
/about A /about/index.html fájl 301 /névjegy/
/névjegy/ A /about/index.html fájl 200 /névjegy/
/about/index.html A /about/index.html fájl 301 /névjegy/
/Kapcsolat A /contact.html fájl 301 /Kapcsolat/
/Kapcsolat/ A /contact.html fájl 200 /Kapcsolat/
/contact.html A /contact.html fájl 301 /Kapcsolat/

Soha

Ha a beállításra van neverállítvatrailingSlash, a rendszer a záró perjelben végződő összes kérést átirányítja egy nem perjelES URL-címre. Például /contact/ a rendszer átirányítja a következőre /contact: .

"trailingSlash": "never"
Kérések... Visszatér... állapottal... és elérési út...
/about A /about/index.html fájl 200 /about
/névjegy/ A /about/index.html fájl 301 /about
/about/index.html A /about/index.html fájl 301 /about
/Kapcsolat A /contact.html fájl 200 /Kapcsolat
/Kapcsolat/ A /contact.html fájl 301 /Kapcsolat
/contact.html A /contact.html fájl 301 /Kapcsolat

Automatikus

Ha be autovan állítvatrailingSlash, a rendszer a mappákra irányuló összes kérést egy záró perjellel rendelkező URL-címre irányítja át. A rendszer minden fájlkérést átirányít egy nem perjeles URL-címre.

"trailingSlash": "auto"
Kérések... Visszatér... állapottal... és elérési út...
/about A /about/index.html fájl 301 /névjegy/
/névjegy/ A /about/index.html fájl 200 /névjegy/
/about/index.html A /about/index.html fájl 301 /névjegy/
/Kapcsolat A /contact.html fájl 200 /Kapcsolat
/Kapcsolat/ A /contact.html fájl 301 /Kapcsolat
/contact.html A /contact.html fájl 301 /Kapcsolat

Az optimális webhelyteljesítmény érdekében konfiguráljon egy záró perjel stratégiát az alwaysegyik , nevervagy auto mód használatával.

Alapértelmezés szerint a konfiguráció kihagyásakor a trailingSlash Static Web Apps a következő szabályokat alkalmazza:

Kérések... Visszatér... állapottal... és elérési út...
/about A /about/index.html fájl 200 /about
/névjegy/ A /about/index.html fájl 200 /névjegy/
/about/index.html A /about/index.html fájl 200 /about/index.html
/Kapcsolat A /contact.html fájl 200 /Kapcsolat
/Kapcsolat/ A /contact.html fájl 301 /Kapcsolat
/contact.html A /contact.html fájl 200 /contact.html

Példa konfigurációs fájlra

{
  "trailingSlash": "auto",
  "routes": [
    {
      "route": "/profile*",
      "allowedRoles": ["authenticated"]
    },
    {
      "route": "/admin/index.html",
      "allowedRoles": ["administrator"]
    },
    {
      "route": "/images/*",
      "headers": {
        "cache-control": "must-revalidate, max-age=15770000"
      }
    },
    {
      "route": "/api/*",
      "methods": ["GET"],
      "allowedRoles": ["registeredusers"]
    },
    {
      "route": "/api/*",
      "methods": ["PUT", "POST", "PATCH", "DELETE"],
      "allowedRoles": ["administrator"]
    },
    {
      "route": "/api/*",
      "allowedRoles": ["authenticated"]
    },
    {
      "route": "/customers/contoso*",
      "allowedRoles": ["administrator", "customers_contoso"]
    },
    {
      "route": "/login",
      "rewrite": "/.auth/login/github"
    },
    {
      "route": "/.auth/login/twitter",
      "statusCode": 404
    },
    {
      "route": "/logout",
      "redirect": "/.auth/logout"
    },
    {
      "route": "/calendar*",
      "rewrite": "/calendar.html"
    },
    {
      "route": "/specials",
      "redirect": "/deals",
      "statusCode": 301
    }
  ],
  "navigationFallback": {
    "rewrite": "index.html",
    "exclude": ["/images/*.{png,jpg,gif}", "/css/*"]
  },
  "responseOverrides": {
    "400": {
      "rewrite": "/invalid-invitation-error.html"
    },
    "401": {
      "redirect": "/login",
      "statusCode": 302
    },
    "403": {
      "rewrite": "/custom-forbidden-page.html"
    },
    "404": {
      "rewrite": "/404.html"
    }
  },
  "globalHeaders": {
    "content-security-policy": "default-src https: 'unsafe-eval' 'unsafe-inline'; object-src 'none'"
  },
  "mimeTypes": {
    ".json": "text/json"
  }
}

A fenti konfiguráció alapján tekintse át a következő forgatókönyveket.

Kérések... találatok...
/Profil A hitelesített felhasználók a /profile/index.html fájlt szolgálják ki. A nem hitelesített felhasználókat a válasz felülbírálási szabály átirányítja a 401 /login helyre.
/admin, /admin/vagy /admin/index.html A rendszergazdai szerepkörben hitelesített felhasználók a /admin/index.html fájlt szolgálják ki. A rendszergazdai szerepkörben nem szereplő hitelesített felhasználók 1. hibaüzenetet 403kapnak. A rendszer átirányítja a nem hitelesített felhasználókat a /login helyre
/images/logo.png A rendszerképet egy egyéni gyorsítótárszabálysal szolgálja ki, ahol a maximális életkor valamivel több, mint 182 nap (15 770 000 másodperc).
/api/admin GET A regisztrált felhasználóktól érkező kérelmeket a rendszer elküldi az API-nak. A regisztrált felhasználók és a hitelesítés nélküli felhasználók hibaüzenetet 401 kapnak.

POST, PUT, PATCHés DELETE a rendszergazdai szerepkörben hitelesített felhasználóktól érkező kéréseket a rendszer elküldi az API-nak. A hitelesített, rendszergazdai szerepkörrel nem rendelkező és nem hitelesített felhasználók hibaüzenetet 401 kapnak.
/customers/contoso A rendszergazdai vagy customers_contoso szerepkörökhöz tartozó hitelesített felhasználók a /customers/contoso/index.html fájlt szolgálják ki. A rendszergazdai vagy customers_contoso szerepkörökben nem szereplő hitelesített felhasználók 1-et eredményeznek403. A rendszer átirányítja a nem hitelesített felhasználókat a /login webhelyre.
/Logika A hitelesítés nélküli felhasználókat a GitHubon való hitelesítéssel kell hitelesíteni.
/.auth/login/twitter Mivel az útvonalszabály letiltja a Twitter engedélyezését, a rendszer hibát 404 ad vissza. Ez a hiba ezután visszaesik a /index.html szolgáltatásra egy 200 állapotkóddal.
/Jel A rendszer kijelentkezteti a felhasználókat bármely hitelesítési szolgáltatóból.
/calendar/2021/01 A böngésző a /calendar.html fájlt szolgálja ki.
/Akciós A böngészőt a rendszer véglegesen átirányítja a /deals webhelyre.
/data.json A MIME típussal text/json kiszolgált fájl.
/about, vagy bármely olyan mappa, amely megfelel az ügyféloldali útválasztási mintáknak A /index.html fájl egy állapotkóddal 200 lesz kiszolgálva.
Nem létező fájl a /images/ mappában Hiba 404 .

1 Egyéni hibalapot válasz felülbírálási szabály használatával adhat meg.

Korlátozások

A staticwebapp.config.json fájlra az alábbi korlátozások vonatkoznak.

  • A maximális fájlméret 20 KB
  • Legfeljebb 50 különböző szerepkör

Az általános korlátozásokról és korlátozásokról a Kvóták című cikkben olvashat .

Következő lépések