Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Konfiguraci pro Azure Static Web Apps můžete definovat v souboru staticwebapp.config.json , který řídí následující nastavení:
- Směrování
- Autentizace
- Autorizace
- Náhradní pravidla
- Přepsání odpovědí HTTP
- Globální definice hlaviček HTTP
- Vlastní typy MIME
- Sítě
Poznámka:
routes.json, která byla dříve použita ke konfiguraci směrování, je zastaralá. Ke konfiguraci směrování a dalších nastavení pro statickou webovou aplikaci použijte staticwebapp.config.json , jak je popsáno v tomto článku.
Tento dokument popisuje, jak nakonfigurovat Azure Static Web Apps, což je samostatný produkt a oddělený od funkce hostování statického webu služby Azure Storage.
Umístění souboru
Doporučené umístění pro staticwebapp.config.json je ve složce nastavené jako app_location v souboru pracovního postupu. Soubor však můžete umístit do libovolné podsložky v rámci složky nastavené jako app_location. Pokud existuje krok sestavení, musíte také zajistit, aby krok sestavení vypíše soubor do kořenového adresáře output_location.
Podrobnosti najdete v ukázkovém konfiguračním souboru.
Důležité
Zastaralý soubor routes.json se ignoruje, pokud existuje staticwebapp.config.json.
Trasy
Ve statické webové aplikaci můžete definovat pravidla pro jednu nebo více tras. Pravidla směrování umožňují omezit přístup k uživatelům v konkrétních rolích nebo provádět akce, jako je přesměrování nebo přepsání. Trasy jsou definovány jako pole pravidel směrování. Příklady použití najdete v ukázkovém konfiguračním souboru .
- Pravidla jsou definována
routesv poli, i když máte pouze jednu trasu. - Pravidla se vyhodnocují v pořadí, v jakém se zobrazují v
routespoli. - Vyhodnocení pravidla se zastaví při první shodě. Shoda nastane, když
routevlastnost a hodnota vmethodspoli (pokud je zadána) odpovídají požadavku. Každý požadavek může odpovídat maximálně jednomu pravidlu.
Aspekty směrování se výrazně překrývají s koncepty ověřování (identifikace uživatele) a autorizace (přiřazování schopností uživateli). Nezapomeňte si přečíst průvodce ověřováním a autorizací společně s tímto článkem.
Definování tras
Každé pravidlo se skládá ze vzoru trasy spolu s jednou nebo více volitelnými vlastnostmi pravidla. Pravidla směrování jsou v poli routes definována. Příklady použití najdete v ukázkovém konfiguračním souboru .
Důležité
Pouze vlastnosti route a methods (pokud jsou zadané) se používají k určení, jestli pravidlo odpovídá požadavku.
| Vlastnost pravidla | Požaduje se | Výchozí hodnota | Komentář |
|---|---|---|---|
route |
Ano | Není k dispozici | Vzor trasy požadovaný volajícím.
|
methods |
Ne | Všechny metody | Definuje pole metod požadavků, které odpovídají trase. Mezi dostupné metody patří: GET, HEAD, POST, PUT, DELETECONNECT, OPTIONS, , TRACEa PATCH. |
rewrite |
Ne | Není k dispozici | Definuje soubor nebo cestu vrácenou z požadavku.
|
redirect |
Ne | Není k dispozici | Definuje cíl přesměrování souboru nebo cesty pro požadavek. |
statusCode |
Ne |
301 nebo 302 pro přesměrování |
Stavový kód HTTP odpovědi. |
headers |
Ne | Není k dispozici |
Sada hlaviček HTTP přidána do odpovědi
|
allowedRoles |
Ne | anonymní | Definuje pole názvů rolí požadovaných pro přístup ke trase.
|
Každá vlastnost má v rámci kanálu požadavku/odpovědi konkrétní účel.
| Účel | Vlastnosti |
|---|---|
| Porovnání tras |
route, methods |
| Zpracování po porovnávání a autorizaci pravidla |
rewrite (upraví požadavek)redirect, headers, statusCode (upravuje odpověď) |
| Autorizace po spárované trase | allowedRoles |
Určení vzorů tras
Vlastnost route může být přesná trasa nebo zástupný znak.
Přesná trasa
Pokud chcete definovat přesnou trasu, umístěte úplnou cestu k souboru do route vlastnosti.
{
"route": "/profile/index.html",
"allowedRoles": ["authenticated"]
}
Toto pravidlo odpovídá požadavkům na soubor /profile/index.html. Vzhledem k tomu , že index.html je výchozím souborem, pravidlo také odpovídá žádostem o složku (/profile nebo /profile/).
Důležité
Pokud ve vlastnosti použijete cestu ke složce (/profilenebo/profile/), nebude odpovídat požadavkům na soubor route. Při ochraně trasy, která obsluhuje soubor, vždy použijte úplnou cestu k souboru, například /profile/index.html.
Vzor se zástupnými znaky
Zástupná pravidla se shodují se všemi požadavky ve vzoru trasy a jsou podporována pouze na konci cesty. Příklady použití najdete v ukázkovém konfiguračním souboru .
Pokud chcete například implementovat trasy pro kalendářovou aplikaci, můžete přepsat všechny adresy URL, které spadají pod trasu kalendáře , aby sloužily jednomu souboru.
{
"route": "/calendar*",
"rewrite": "/calendar.html"
}
Soubor calendar.html pak může použít směrování na straně klienta k poskytování jiného zobrazení pro varianty adres URL, jako /calendar/january/1je , /calendar/2020a /calendar/overview.
Poznámka:
Vzor trasy /calendar/* odpovídá všem požadavkům na cestě /calendar/. Nebude se však shodovat s požadavky na cesty /calendar nebo /calendar.html. Použijte /calendar* ke shodě všech požadavků, které začínají s /calendar.
Můžete filtrovat výsledky zástupných znaků podle přípony souboru. Pokud byste například chtěli přidat pravidlo, které odpovídá pouze souborům HTML v dané cestě, můžete vytvořit následující pravidlo:
{
"route": "/articles/*.html",
"headers": {
"Cache-Control": "public, max-age=604800, immutable"
}
}
Pokud chcete filtrovat více přípon souborů, zahrnete možnosti do složených závorek, jak je znázorněno v tomto příkladu:
{
"route": "/images/thumbnails/*.{png,jpg,gif}",
"headers": {
"Cache-Control": "public, max-age=604800, immutable"
}
}
Mezi běžné případy použití tras se zástupnými znaky patří:
- Obsluha konkrétního souboru pro celý vzor cesty
- Vynucení ověřovacích a autorizačních pravidel
- Implementace specializovaných pravidel ukládání do mezipaměti
Zabezpečení tras pomocí rolí
Trasy jsou zabezpečené přidáním jednoho nebo více názvů rolí do pole pravidla allowedRoles . Příklady použití najdete v ukázkovém konfiguračním souboru .
Důležité
Pravidla směrování můžou zabezpečit pouze požadavky HTTP na trasy, které se obsluhují ze statických webových aplikací. Mnoho front-endových architektur používá směrování na straně klienta, které upravuje trasy v prohlížeči bez vydávání požadavků na Static Web Apps. Pravidla směrování nezabezpečí trasy na straně klienta. Klienti by měli volat HTTP API k získání citlivých dat. Před vrácením dat se ujistěte, že rozhraní API ověřují identitu uživatele.
Ve výchozím nastavení patří každý uživatel k předdefinované anonymous roli a všichni přihlášení uživatelé jsou členy authenticated této role. Volitelně se uživatelé přidružují k vlastním rolím prostřednictvím pozvánek.
Pokud chcete například omezit trasu jenom na ověřené uživatele, přidejte do authenticated pole předdefinovanou allowedRoles roli.
{
"route": "/profile*",
"allowedRoles": ["authenticated"]
}
V poli allowedRoles můžete podle potřeby vytvořit nové role. Pokud chcete omezit trasu jenom na správce, můžete v administrator poli definovat vlastní roli s názvem allowedRoles.
{
"route": "/admin*",
"allowedRoles": ["administrator"]
}
- Máte plnou kontrolu nad názvy rolí; neexistuje žádný seznam, kterému by se musely vaše role přizpůsobit.
- Jednotlivé uživatele jsou přidružené k rolím prostřednictvím pozvánek.
Důležité
Při zabezpečení obsahu zadejte přesné soubory, pokud je to možné. Pokud máte k zabezpečení mnoho souborů, používejte zástupné znaky za společnou předponou. Příklad: /profile* Zabezpečuje všechny možné trasy, které začínají na /profile, včetně /profile.
Omezení přístupu k celé aplikaci
Často chcete vyžadovat ověřování pro každou trasu ve vaší aplikaci. Pokud chcete trasy uzamknout, přidejte pravidlo, které odpovídá všem trasám a zahrnuje předdefinované authenticated role v allowedRoles poli.
Následující příklad konfigurace blokuje anonymní přístup a přesměruje všechny neověřené uživatele na přihlašovací stránku Microsoft Entra.
{
"routes": [
{
"route": "/*",
"allowedRoles": ["authenticated"]
}
],
"responseOverrides": {
"401": {
"statusCode": 302,
"redirect": "/.auth/login/aad"
}
}
}
Poznámka:
Ve výchozím nastavení jsou povoleni všichni předem nakonfigurovaní zprostředkovatelé identity. Pokud chcete blokovat zprostředkovatele ověřování, přečtěte si téma Ověřování a autorizace.
Náhradní trasy
Jednostrákové aplikace se často spoléhají na směrování na straně klienta. Tato pravidla směrování na straně klienta aktualizují umístění okna prohlížeče, aniž by se požadavky vrátily na server. Pokud stránku aktualizujete nebo přejdete přímo na adresy URL vygenerované pravidly směrování na straně klienta, je k poskytování příslušné stránky HTML vyžadována náhradní trasa na straně serveru. Záložní stránka se často označuje jako index.html pro vaši aplikaci na straně klienta.
Poznámka:
Pravidla směrování se nepoužijí na žádosti, které navigationFallback aktivují.
Náhradní pravidlo můžete definovat přidáním oddílu navigationFallback . Následující příklad vrátí /index.html pro všechny požadavky statického souboru, které neodpovídají nasazeným souborům.
{
"navigationFallback": {
"rewrite": "/index.html"
}
}
Můžete určit, které požadavky vracejí záložní soubor definováním filtru. V následujícím příkladu jsou požadavky na určité trasy ve složce /images a všechny soubory ve složce /css vyloučeny z vrácení záložního souboru.
{
"navigationFallback": {
"rewrite": "/index.html",
"exclude": ["/images/*.{png,jpg,gif}", "/css/*"]
}
}
Například s následující adresářovou strukturou by výše uvedené pravidlo záložní navigace vedlo k výsledkům podrobným v následující tabulce.
├── images
│ ├── logo.png
│ ├── headshot.jpg
│ └── screenshot.gif
│
├── css
│ └── global.css
│
├── about.html
└── index.html
| Žádosti o... | návraty... | s postavením... |
|---|---|---|
| /asi/ | Soubor /index.html . | 200 |
| /images/logo.png | Soubor obrázku. | 200 |
| /images/icon.svg | Soubor /index.html – protože přípona souboru svg není uvedená ve /images/*.{png,jpg,gif} filtru. |
200 |
| /images/unknown.png | Chyba: Soubor nebyl nalezen. | 404 |
| /css/unknown.css | Chyba: Soubor nebyl nalezen. | 404 |
| /css/global.css | Soubor šablony stylů. | 200 |
| /about.html | Stránka HTML. | 200 |
| Jakákoli jiná cesta mimo složky /images nebo /css , která neodpovídá cestě k nasazenýmu souboru. | Soubor /index.html . | 200 |
Globální hlavičky
Tato globalHeaders část poskytuje sadu HTTP hlaviček použitých pro každou odpověď, pokud není přepsána pravidlem hlavička trasy, jinak se vrátí sjednocení hlaviček z trasy a globálních hlaviček.
Příklady použití najdete v ukázkovém konfiguračním souboru .
Pokud chcete záhlaví odebrat, nastavte hodnotu na prázdný řetězec ("").
Mezi běžné případy použití globálních hlaviček patří:
- Vlastní pravidla ukládání do mezipaměti
- Zásady zabezpečení
- Nastavení kódování
- Konfigurace sdílení prostředků mezi zdroji (CORS)
Následující příklad implementuje vlastní konfiguraci CORS.
{
"globalHeaders": {
"Access-Control-Allow-Origin": "https://example.com",
"Access-Control-Allow-Methods": "POST, GET, OPTIONS"
}
}
Poznámka:
Globální hlavičky nemají vliv na odpovědi rozhraní API. Hlavičky v odpovědích rozhraní API se zachovají a vrátí klientovi.
Přepsání odpovědí
Tato responseOverrides část poskytuje příležitost definovat vlastní odpověď, pokud by server jinak vrátil kód chyby. Příklady použití najdete v ukázkovém konfiguračním souboru .
K dispozici jsou následující kódy HTTP, které je možné přepsat:
| Kód stavu | Význam | Možná příčina |
|---|---|---|
| 400 | Chybný požadavek | Neplatný odkaz na pozvánku |
| 401 | Neautorizováno | Žádost o přístup k omezeným stránkám při nepřihlášeném uživateli |
| 403 | Zakázáno |
|
| 404 | Nenalezeno | Soubor nenalezen |
Následující příklad konfigurace ukazuje, jak přepsat kód chyby.
{
"responseOverrides": {
"400": {
"rewrite": "/invalid-invitation-error.html"
},
"401": {
"statusCode": 302,
"redirect": "/login"
},
"403": {
"rewrite": "/custom-forbidden-page.html"
},
"404": {
"rewrite": "/custom-404.html"
}
}
}
Platforma
Oddíl platform řídí nastavení specifická pro platformu, jako je verze modulu runtime jazyka API.
Vyberte verzi běhového prostředí jazyka API.
Pokud chcete nakonfigurovat verzi modulu runtime jazyka API, nastavte apiRuntime vlastnost v platform části na jednu z následujících podporovaných hodnot.
| Verze běhového prostředí jazyka | Operační systém | Verze Azure Functions |
apiRuntime hodnota |
Datum ukončení podpory |
|---|---|---|---|---|
| .NET Core 3.1 | Windows | 3.x | dotnet:3.1 |
sobota 3. prosince 2022 |
| .NET 6.0 in-process | Windows | 4.x | dotnet:6.0 |
30. dubna 2025 |
| .NET 8.0 v průběhu | Windows | 4.x | dotnet:8.0 |
- |
| Izolované prostředí .NET 6.0 | Windows | 4.x | dotnet-isolated:6.0 |
30. dubna 2025 |
| Izolované rozhraní .NET 7.0 | Windows | 4.x | dotnet-isolated:7.0 |
30. dubna 2025 |
| Izolované rozhraní .NET 8.0 | Windows | 4.x | dotnet-isolated:8.0 |
- |
| Izolované prostředí .NET 9.0 | Windows | 4.x | dotnet-isolated:9.0 |
- |
| Node.js 12.x | Operační systém Linux | 3.x | node:12 |
sobota 3. prosince 2022 |
| Node.js 14.x | Operační systém Linux | 4.x | node:14 |
30. dubna 2025 |
| Node.js 16.x | Operační systém Linux | 4.x | node:16 |
30. dubna 2025 |
| Node.js 18.x | Operační systém Linux | 4.x | node:18 |
31. května 2025 |
| Node.js 20.x | Operační systém Linux | 4.x | node:20 |
- |
| Python 3.8 | Operační systém Linux | 4.x | python:3.8 |
30. dubna 2025 |
| Python 3.9 | Operační systém Linux | 4.x | python:3.9 |
- |
| Python 3.10 | Operační systém Linux | 4.x | python:3.10 |
- |
| Python 3.11 | Operační systém Linux | 4.x | python:3.11 |
- |
.NET
Pokud chcete změnit verzi modulu runtime v aplikaci .NET, změňte TargetFramework hodnotu v souboru csproj . I když je to volitelné, pokud nastavíte hodnotu apiRuntime v souboru staticwebapp.config.json, ujistěte se, že hodnota odpovídá tomu, co definujete v souboru csproj.
Následující příklad ukazuje, jak aktualizovat TargetFramework element pro NET 8.0 jako verzi modulu runtime jazyka API v souboru csproj .
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
...
</PropertyGroup>
...
Node.js
Následující příklad konfigurace ukazuje, jak pomocí apiRuntime vlastnosti vybrat Node.js 20 jako verzi modulu runtime jazyka API v souborustaticwebapp.config.json .
{
...
"platform": {
"apiRuntime": "node:20"
}
...
}
Python
Následující příklad konfigurace ukazuje, jak pomocí apiRuntime vlastnosti vybrat Python 3.11 jako verzi modulu runtime jazyka API v souborustaticwebapp.config.json .
{
...
"platform": {
"apiRuntime": "python:3.11"
}
...
}
Sítě
Oddíl networking řídí konfiguraci sítě statické webové aplikace. Pokud chcete omezit přístup k aplikaci, zadejte seznam povolených bloků IP adres v allowedIpRangessouboru . Další informace o počtu povolených bloků IP adres najdete v tématu Kvóty ve službě Azure Static Web Apps.
Poznámka:
Konfigurace sítě je dostupná jenom v plánu Azure Static Web Apps Standard.
Definujte každý blok adresy IPv4 v zápisu CIDR (Classless Inter-Domain Routing). Další informace o zápisu CIDR najdete v tématu bezestavové směrování mezi doménami. Každý blok adresy IPv4 může znamenat veřejný nebo privátní adresní prostor. Pokud chcete povolit přístup jenom z jedné IP adresy, můžete použít /32 blok CIDR.
{
"networking": {
"allowedIpRanges": [
"10.0.0.0/24",
"100.0.0.0/32",
"192.168.100.0/22"
]
}
}
Pokud je zadán jeden nebo více bloků IP adres, požadavky pocházející z IP adres, které neodpovídají hodnotě v allowedIpRanges přístupu, jsou odepřeny.
Kromě bloků IP adres můžete také v poli zadat značkyallowedIpRanges služeb, které omezují provoz na určité služby Azure.
"networking": {
"allowedIpRanges": ["AzureFrontDoor.Backend"]
}
Ověřování
Výchozí ověřovací zprostředkovatelé nevyžadují nastavení v konfiguračním souboru.
Vlastní zprostředkovatelé ověřování používají
authčást souboru nastavení.
Podrobnosti o tom, jak omezit trasy na ověřené uživatele, najdete v tématu Zabezpečení tras pomocí rolí.
Zakázat mezipaměť pro ověřené cesty
Pokud nastavíte ruční integraci se službou Azure Front Door, možná budete chtít zakázat ukládání do mezipaměti pro zabezpečené trasy. S povolenou podnikovou úrovní edge je ukládání do mezipaměti pro zabezpečené trasy již zakázáno.
Pokud chcete zakázat ukládání do mezipaměti služby Azure Front Door pro zabezpečené trasy, přidejte "Cache-Control": "no-store" do definice hlavičky trasy.
Příklad:
{
"route": "/members",
"allowedRoles": ["authenticated, members"],
"headers": {
"Cache-Control": "no-store"
}
}
Přepojovací brána
Tato forwardingGateway část konfiguruje, jak je přistupováno ke statické webové aplikaci z přeposílací brány, jako je služba Content Delivery Network (CDN) nebo Azure Front Door.
Poznámka:
Konfigurace brány pro předávání je dostupná jenom v plánu Azure Static Web Apps Standard.
Povolené přesměrované hostitele
Seznam allowedForwardedHosts určuje názvy hostitelů, které mají být přijaty v hlavičce X-Forwarded-Host. Pokud je v seznamu odpovídající doména, Static Web Apps použije X-Forwarded-Host hodnotu při vytváření adres URL pro přesměrování, například po úspěšném přihlášení.
Aby služba Static Web Apps fungovala správně za bránou předávání, musí požadavek z brány obsahovat správný název hostitele v X-Forwarded-Host hlavičce a stejný název hostitele musí být uvedený v allowedForwardedHosts.
"forwardingGateway": {
"allowedForwardedHosts": [
"example.org",
"www.example.org",
"staging.example.org"
]
}
Pokud se hlavička X-Forwarded-Host neshoduje s hodnotou v seznamu, požadavky budou pořád úspěšné, ale hlavička se v odpovědi nepoužije.
Povinná záhlaví
Povinné hlavičky jsou hlavičky HTTP, které se musí odesílat s každou žádostí na váš web. Jedním z použití požadovaných hlaviček je odepření přístupu k webu, pokud nejsou v každém požadavku přítomny všechny požadované hlavičky.
Například následující konfigurace ukazuje, jak můžete přidat jedinečný identifikátor služby Azure Front Door , který omezuje přístup k vašemu webu z konkrétní instance služby Azure Front Door. Úplné podrobnosti najdete v kurzu Konfigurace služby Azure Front Door.
"forwardingGateway": {
"requiredHeaders": {
"X-Azure-FDID" : "692a448c-2b5d-4e4d-9fcc-2bc4a6e2335f"
}
}
- Páry klíč/hodnota můžou být libovolnou sadou libovolných řetězců.
- Klíče nerozlišují malá a velká písmena.
- V hodnotách se rozlišují malá a velká písmena.
Koncové lomítko
Koncové lomítko je / na konci adresy URL. URL s koncovým lomítkem obvykle odkazuje na adresář na webovém serveru, zatímco URL bez koncového lomítka indikuje soubor.
Vyhledávací weby zachází se dvěma adresami URL samostatně bez ohledu na to, jestli se jedná o soubor nebo adresář. Pokud se stejný obsah zobrazuje na obou adresách URL, váš web má duplicitní obsah, který může negativně ovlivnit optimalizaci pro vyhledávače (SEO). Při explicitní konfiguraci použije Static Web Apps sadu normalizace adres URL a pravidel přesměrování, která pomáhají zlepšit výkon vašeho webu a výkon SEO.
Pro každou z dostupných konfigurací platí následující pravidla normalizace a přesměrování:
Vždy
Při nastavování trailingSlash na always se všechny požadavky, které neobsahují koncové lomítko, přesměrují na URL s koncovým lomítkem. Například /contact je přesměrován na /contact/.
"trailingSlash": "always"
| Žádosti o... | návraty... | s postavením... | a cesta... |
|---|---|---|---|
| /about | Soubor /about/index.html | 301 |
/asi/ |
| /asi/ | Soubor /about/index.html | 200 |
/asi/ |
| /about/index.html | Soubor /about/index.html | 301 |
/asi/ |
| /privacy.html | Soubor /privacy.html | 301 |
/soukromí/ |
Nikdy
Při nastavování trailingSlash se never všechny požadavky končící na koncové lomítko přesměrují na adresu URL bez koncového lomítka. Například /contact/ je přesměrován na /contact.
"trailingSlash": "never"
| Žádosti o... | návraty... | s postavením... | a cesta... |
|---|---|---|---|
| /about | Soubor /about/index.html | 200 |
/about |
| /asi/ | Soubor /about/index.html | 301 |
/about |
| /about/index.html | Soubor /about/index.html | 301 |
/about |
| /privacy.html | Soubor /privacy.html | 301 |
/soukromí |
Automaticky
Když nastavíte trailingSlash hodnotu auto, všechny požadavky na složky se přesměrují na adresu URL s koncovým lomítkem. Všechny požadavky na soubory se přesměrují na adresu URL bez koncového lomítka.
"trailingSlash": "auto"
| Žádosti o... | návraty... | s postavením... | a cesta... |
|---|---|---|---|
| /about | Soubor /about/index.html | 301 |
/asi/ |
| /asi/ | Soubor /about/index.html | 200 |
/asi/ |
| /about/index.html | Soubor /about/index.html | 301 |
/asi/ |
| /privacy.html | Soubor /privacy.html | 301 |
/soukromí |
Pro lepší výkon webu nakonfigurujte strategii koncového lomítka pomocí jednoho z režimů: always, never nebo auto.
Ve výchozím nastavení platí, že pokud je trailingSlash konfigurace vynechána, statické webové aplikace použijí následující pravidla:
| Žádosti o... | návraty... | s postavením... | a cesta... |
|---|---|---|---|
| /about | Soubor /about/index.html | 200 |
/asi |
| /asi/ | Soubor /about/index.html | 200 |
/asi/ |
| /about/index.html | Soubor /about/index.html | 200 |
/about/index.html |
| /privacy.html | Soubor /privacy.html | 200 |
/privacy.html |
Vzorový konfigurační soubor
{
"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"
}
}
Na základě výše uvedené konfigurace si projděte následující scénáře.
| Žádosti o... | výsledky v... |
|---|---|
| /profil | Ověřeným uživatelům je poskytován soubor /profile/index.html. Neautentizovaní uživatelé jsou přesměrováni na /login pravidlem pro přepsání odpovědi 401. |
| /admin, /admin/, nebo /admin/index.html | Ověřeným uživatelům v roli správce se zpřístupní soubor /admin/index.html. Ověřeným uživatelům, kteří nejsou v roli správce, se zobrazí chyba 4031. Neověřené uživatele se přesměrují na /login |
| /images/logo.png | Servíruje obrázek s vlastní mezipaměťovou politikou, kde je maximální doba platnosti o něco více než 182 dnů (15 770 000 sekund). |
| /api/admin |
GET do rozhraní API se odesílají požadavky od ověřených uživatelů v roli registrovaných uživatelů. Ověřeným uživatelům, kteří nejsou v roli registrovaných uživatelů, a neověřeným uživatelům se zobrazí 401 chyba.POST, , PUTPATCHa DELETE žádosti od ověřených uživatelů v roli správce se odesílají do rozhraní API. Ověření uživatelé, kteří nejsou v roli správce, a neověření uživatelé obdrží 401 chybu. |
| /customers/contoso | Ověřeným uživatelům, kteří patří buď k rolím administrator nebo customers_contoso, je předán soubor /customers/contoso/index.html. Ověření uživatelé, kteří nejsou v rolích správce nebo customers_contoso, obdrží chybu 4031. Neověřené uživatele se přesměrují na /login. |
| /přihlášení do systému | Neověřené uživatele jsou vyzváni k ověření pomocí GitHubu. |
| _/.auth/login/x | Protože pravidlo trasy zakáže autorizaci X, vrátí se 404 chyba. Tato chyba se pak přepne na poskytování /index.html s kódem stavu 200. |
| /odhlášení od sítě | Uživatelé jsou odhlášeni od každého poskytovatele ověřování. |
| /calendar/2021/01 | Prohlížeči je doručen soubor /calendar.html. |
| /speciály | Prohlížeč je trvale přesměrován na /deals. |
| /data.json | Soubor obsluhoval typ text/json MIME. |
| /about nebo jakákoli složka, která odpovídá vzorům směrování na straně klienta | Soubor /index.html se obsluhuje se stavovým kódem 200 . |
| Neexistující soubor ve složce /images/ | Chyba 404. |
1 Pomocí pravidla přepsání odpovědi můžete zadat vlastní chybovou stránku.
Omezení
Pro soubor staticwebapp.config.json existují následující omezení.
- Maximální velikost souboru je 20 kB
- Maximálně 50 jedinečných rolí
Najdete obecná omezení v článku Kvóty.