Sdílet prostřednictvím


Konfigurujte Azure Static Web Apps

Konfiguraci pro Azure Static Web Apps můžete definovat v souboru staticwebapp.config.json , který řídí následující nastavení:

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 routes v poli, i když máte pouze jednu trasu.
  • Pravidla se vyhodnocují v pořadí, v jakém se zobrazují v routes poli.
  • Vyhodnocení pravidla se zastaví při první shodě. Shoda nastane, když route vlastnost a hodnota v methods poli (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.
  • Je ve vzájemném vylučování s pravidlem redirect.
  • Přepisovací pravidla nemění polohu prohlížeče.
  • Hodnoty musí být relativní vzhledem ke kořenovému adresáři aplikace.
redirect Ne Není k dispozici Definuje cíl přesměrování souboru nebo cesty pro požadavek.
  • Je ve vzájemném vylučování s pravidlem rewrite.
  • Pravidla přesměrování mění umístění prohlížeče.
  • Výchozí kód odpovědi je 302 (dočasné přesměrování), ale můžete ho 301 přepsat (trvalé přesměrování).
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
  • Hlavičky specifické pro trasu přepíší, globalHeaders když je hlavička specifická pro trasu stejná jako globální hlavička v odpovědi.
  • Chcete-li záhlaví odebrat, nastavte hodnotu na prázdný řetězec.
allowedRoles Ne anonymní Definuje pole názvů rolí požadovaných pro přístup ke trase.
  • Platné znaky zahrnují a-z, A-Z, 0-9a _.
  • Předdefinovaná role anonymousplatí pro všechny uživatele.
  • Předdefinovaná role se authenticatedvztahuje na všechny přihlášené uživatele.
  • Uživatelé musí patřit alespoň do jedné role.
  • Role se přiřazují podle nebo.
    • Pokud je uživatel v některé z uvedených rolí, udělí se přístup.
  • Jednotlivé uživatele jsou přidružené k rolím prostřednictvím pozvánek.

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

Důležité

Pokud migrujete ze zastaralého souboru routes.json

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
  • Uživatel je přihlášený, ale nemá role potřebné k zobrazení stránky.
  • Uživatel je přihlášený, ale modul runtime nemůže získat podrobnosti o uživateli z deklarací identity.
  • K webu s vlastními rolemi je přihlášeno příliš mnoho uživatelů, proto se modul runtime nemůže přihlásit uživatele.
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í

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.

Další kroky