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:
- Útválasztás
- Hitelesítés
- Engedélyezés
- Tartalék szabályok
- HTTP-válasz felülbírálása
- Globális HTTP-fejlécdefiníciók
- Egyéni MIME-típusok
- Hálózat
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 amethods
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.
|
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 , CONNECT OPTIONS , TRACE , és PATCH . |
rewrite |
Nem | n.a. | Meghatározza a kérelemből visszaadott fájlt vagy elérési utat.
|
redirect |
Nem | n.a. | Meghatározza egy kérés fájl- vagy útvonalátirányítási célját. |
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.
|
allowedRoles |
Nem | névtelen | Egy útvonal eléréséhez szükséges szerepkörnevek tömbjének meghatározása.
|
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 (/profile
vagy /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 administrator
a 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.
Feljegyzés
A rendszer nem alkalmazza az útvonalszabályokat az eseményindító navigationFallback
kérésekre.
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
│
├── about.html
└── index.html
Kérések... | Visszatér... | állapottal... |
---|---|---|
/körülbelül/ | 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 |
/about.html | A HTML-oldal. | 200 |
A /images vagy /css mappákon kívüli bármely más elérési út, amely nem egyezik meg az üzembe helyezett fájl elérési útjának. | 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 |
|
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 |
- |
Node.js 20.x (előzetes verzió) | Linux | 4.x | node:20 |
- |
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 alapértelmezett hitelesítésszolgáltatók nem igényelnek beállításokat a konfigurációs fájlban.
Az egyéni hitelesítésszolgáltatók a
auth
beállításfájl szakaszát használják.
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 allowedForwardedHosts
listá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ó perjel URL-címe hagyományosan a webkiszolgáló egyik könyvtárára utal, míg a nem perjel egy fájlt jelöl.
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 ugyanazt a tartalmat mindkét URL-címen rendereli, a webhely duplikált tartalmat szolgáltat, ami negatívan befolyásolhatja a keresőmotor-optimalizálást (SEO). Ha explicit módon van konfigurálva, a Static Web Apps URL-normalizálási és átirányítási szabályokat alkalmaz, amelyek segítenek javítani a webhely teljesítményét és a SEO teljesítményé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 trailingSlash
always
be, 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... |
---|---|---|---|
/körülbelül | A /about/index.html fájl | 301 |
/körülbelül/ |
/körülbelül/ | A /about/index.html fájl | 200 |
/körülbelül/ |
/about/index.html | A /about/index.html fájl | 301 |
/körülbelül/ |
/privacy.html | A /privacy.html fájl | 301 |
/magánélet/ |
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... |
---|---|---|---|
/körülbelül | A /about/index.html fájl | 200 |
/körülbelül |
/körülbelül/ | A /about/index.html fájl | 301 |
/körülbelül |
/about/index.html | A /about/index.html fájl | 301 |
/körülbelül |
/privacy.html | A /privacy.html fájl | 301 |
/magánélet |
Automatikus
Ha be auto
van á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... |
---|---|---|---|
/körülbelül | A /about/index.html fájl | 301 |
/körülbelül/ |
/körülbelül/ | A /about/index.html fájl | 200 |
/körülbelül/ |
/about/index.html | A /about/index.html fájl | 301 |
/körülbelül/ |
/privacy.html | A /privacy.html fájl | 301 |
/magánélet |
Az optimális webhelyteljesítmény érdekében konfiguráljon egy záró perjel stratégiát az always
egyik , never
vagy 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... |
---|---|---|---|
/körülbelül | A /about/index.html fájl | 200 |
/körülbelül |
/körülbelül/ | A /about/index.html fájl | 200 |
/körülbelül/ |
/about/index.html | A /about/index.html fájl | 200 |
/about/index.html |
/privacy.html | A /privacy.html fájl | 200 |
/privacy.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/x",
"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 403 kapnak. 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. |
/bejelentkezés | A hitelesítés nélküli felhasználókat a GitHubon való hitelesítéssel kell hitelesíteni. |
_/.auth/login/x | Mivel az útvonalszabály letiltja az X-hitelesítést, a 404 rendszer hibát 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 .