Konfigurera Azure Static Web Apps

Du kan definiera konfigurationen för Azure Static Web Apps i filen staticwebapp.config.json , som styr följande inställningar:

Kommentar

routes.json som tidigare användes för att konfigurera routning är inaktuell. Använd staticwebapp.config.json enligt beskrivningen i den här artikeln för att konfigurera routning och andra inställningar för din statiska webbapp.

Det här dokumentet beskriver hur du konfigurerar Azure Static Web Apps, som är en fristående produkt och som är skild från den statiska webbplatsvärdfunktionen i Azure Storage.

Sökväg

Den rekommenderade platsen för staticwebapp.config.json finns i mappen som app_location i arbetsflödesfilen. Du kan dock placera filen i valfri undermapp i mappen som angetts app_locationsom . Om det finns ett byggsteg måste du dessutom se till att byggsteget matar ut filen till roten för output_location.

Mer information finns i exempelkonfigurationsfilen .

Viktigt!

Den inaktuella routes.json-filen ignoreras om det finns en staticwebapp.config.json.

Vägar

Du kan definiera regler för en eller flera vägar i din statiska webbapp. Med routningsregler kan du begränsa åtkomsten till användare i specifika roller eller utföra åtgärder som omdirigering eller omskrivning. Vägar definieras som en matris med routningsregler. Se exempelkonfigurationsfilen för användningsexempel.

  • Regler definieras i matrisen routes , även om du bara har en väg.
  • Regler utvärderas i den ordning de visas i matrisen routes .
  • Regelutvärderingen stoppas vid den första matchningen. En matchning inträffar när route egenskapen och ett värde i matrisen methods (om det anges) matchar begäran. Varje begäran kan matcha högst en regel.

Routningsproblemen överlappar avsevärt autentiseringen (identifierar användaren) och auktoriseringsbegreppen (tilldelar funktioner till användaren). Läs autentiserings- och auktoriseringsguiden tillsammans med den här artikeln.

Definiera vägar

Varje regel består av ett vägmönster, tillsammans med en eller flera av de valfria regelegenskaperna. Routningsregler definieras i matrisen routes . Se exempelkonfigurationsfilen för användningsexempel.

Viktigt!

route Endast egenskaperna och methods (om de anges) används för att avgöra om en regel matchar en begäran.

Regelegenskap Obligatoriskt Standardvärde Kommentar
route Ja saknas Det vägmönster som anroparen begär.
  • Jokertecken stöds i slutet av vägens sökvägar.
    • Till exempel matchar vägen /admin* alla vägar som börjar med /admin.
methods Nej Alla metoder Definierar en matris med begärandemetoder som matchar en väg. Tillgängliga metoder är: GET, HEAD, POST, PUT, DELETE, CONNECT, OPTIONS, TRACEoch PATCH.
rewrite Nej saknas Definierar filen eller sökvägen som returneras från begäran.
  • Är ömsesidigt uteslutande för en redirect regel.
  • Skriv om regler ändrar inte webbläsarens plats.
  • Värdena måste vara relativa till appens rot.
redirect Nej saknas Definierar målet för fil- eller sökvägsomdirigering för en begäran.
  • Är ömsesidigt uteslutande för en rewrite regel.
  • Omdirigeringsregler ändrar webbläsarens plats.
  • Standardsvarskoden är en 302 (tillfällig omdirigering), men du kan åsidosätta med en 301 (permanent omdirigering).
statusCode Nej 301 eller 302 för omdirigeringar HTTP-statuskoden för svaret.
headers Nej saknas Uppsättning HTTP-huvuden som lagts till i svaret.
  • Routningsspecifika rubriker åsidosätter globalHeaders när den routningsspecifika rubriken är samma som det globala huvudet finns i svaret.
  • Om du vill ta bort en rubrik anger du värdet till en tom sträng.
allowedRoles Nej Anonym Definierar en matris med rollnamn som krävs för att komma åt en väg.
  • Giltiga tecken är a-z, A-Z, 0-9och _.
  • Den inbyggda rollen, anonymous, gäller för alla användare.
  • Den inbyggda rollen, authenticated, gäller för alla inloggade användare.
  • Användare måste tillhöra minst en roll.
  • Roller matchas på OR-basis .
    • Om en användare finns i någon av de angivna rollerna beviljas åtkomst.
  • Enskilda användare är kopplade till roller via inbjudningar.

Varje egenskap har ett specifikt syfte i pipelinen för begäran/svar.

Syfte Egenskaper
Matcha vägar route, methods
Bearbeta efter att en regel har matchats och auktoriserats rewrite (ändrar begäran)

redirect, headers, statusCode (ändrar svar)
Auktorisera efter att en väg har matchats allowedRoles

Ange routningsmönster

Egenskapen route kan vara en exakt väg eller ett jokerteckenmönster.

Exakt väg

Om du vill definiera en exakt väg placerar du filens fullständiga sökväg i route egenskapen .

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

Den här regeln matchar begäranden för filen /profile/index.html. Eftersom index.html är standardfilen matchar regeln även begäranden för mappen (/profil eller /profil/).

Viktigt!

Om du använder en mappsökväg (/profile eller ) i route egenskapen matchar den inte begäranden för filen /profile/index.html/profile/. När du skyddar en väg som hanterar en fil använder du alltid den fullständiga sökvägen för filen, till exempel /profile/index.html.

Mönster för jokertecken

Jokerteckenregler matchar alla begäranden i ett vägmönster och stöds endast i slutet av en sökväg. Se exempelkonfigurationsfilen för användningsexempel.

Om du till exempel vill implementera vägar för ett kalenderprogram kan du skriva om alla URL:er som faller under kalendervägen för att hantera en enda fil.

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

Den calendar.html filen kan sedan använda routning på klientsidan för att hantera en annan vy för URL-varianter som /calendar/january/1, /calendar/2020och /calendar/overview.

Kommentar

Ett vägmönster för /calendar/* matchar alla begäranden under sökvägen /calendar/ . Den matchar dock inte begäranden för sökvägarna /kalender eller /calendar.html. Använd /calendar* för att matcha alla begäranden som börjar med /calendar.

Du kan filtrera jokerteckenmatchningar efter filnamnstillägg. Om du till exempel vill lägga till en regel som endast matchar HTML-filer i en viss sökväg kan du skapa följande regel:

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

Om du vill filtrera på flera filnamnstillägg inkluderar du alternativen i klammerparenteser, som du ser i det här exemplet:

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

Vanliga användningsfall för jokerteckenvägar är:

  • Hantera en specifik fil för ett helt sökvägsmönster
  • Framtvinga autentiserings- och auktoriseringsregler
  • Implementera specialiserade cachelagringsregler

Säkra vägar med roller

Vägar skyddas genom att lägga till ett eller flera rollnamn i en regels allowedRoles matris. Se exempelkonfigurationsfilen för användningsexempel.

Viktigt!

Routningsregler kan bara skydda HTTP-begäranden till vägar som hanteras från Static Web Apps. Många klientdelsramverk använder routning på klientsidan som ändrar vägar i webbläsaren utan att skicka begäranden till Static Web Apps. Routningsregler skyddar inte vägar på klientsidan. Klienter bör anropa HTTP-API:er för att hämta känsliga data. Kontrollera att API:er verifierar en användares identitet innan du returnerar data.

Som standard tillhör varje användare den inbyggda anonymous rollen och alla inloggade användare är medlemmar authenticated i rollen. Alternativt kan användare associeras med anpassade roller via inbjudningar.

Om du till exempel vill begränsa en väg till endast autentiserade användare lägger du till den inbyggda rollen i authenticated matrisen allowedRoles .

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

Du kan skapa nya roller efter behov i matrisen allowedRoles . Om du vill begränsa en väg till endast administratörer kan du definiera din egen roll med namnet administrator, i matrisen allowedRoles .

{
  "route": "/admin*",
  "allowedRoles": ["administrator"]
}
  • Du har fullständig kontroll över rollnamn; Det finns ingen lista som dina roller måste följa.
  • Enskilda användare är kopplade till roller via inbjudningar.

Viktigt!

När du skyddar innehåll anger du exakta filer när det är möjligt. Om du har många filer att skydda använder du jokertecken efter ett delat prefix. Till exempel: /profile* skyddar alla möjliga vägar som börjar med /profile, inklusive /profile.

Begränsa åtkomsten till hela programmet

Du vill ofta kräva autentisering för varje väg i ditt program. Om du vill låsa dina vägar lägger du till en regel som matchar alla vägar och inkluderar den inbyggda rollen i authenticated matrisen allowedRoles .

I följande exempelkonfiguration blockeras anonym åtkomst och alla oautentiserade användare omdirigeras till inloggningssidan för Microsoft Entra.

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

Kommentar

Som standard är alla förkonfigurerade identitetsprovidrar aktiverade. Information om hur du blockerar en autentiseringsprovider finns i Autentisering och auktorisering.

Reservvägar

Ensidesprogram förlitar sig ofta på routning på klientsidan. Dessa routningsregler på klientsidan uppdaterar webbläsarens fönsterplats utan att göra begäranden tillbaka till servern. Om du uppdaterar sidan eller går direkt till URL:er som genereras av routningsregler på klientsidan, krävs en återställningsväg på serversidan för att hantera rätt HTML-sida. Återställningssidan betecknas ofta som index.html för din app på klientsidan.

Du kan definiera en reservregel genom att lägga till ett navigationFallback avsnitt. I följande exempel returneras /index.html för alla statiska filbegäranden som inte matchar en distribuerad fil.

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

Du kan styra vilka begäranden som returnerar återställningsfilen genom att definiera ett filter. I följande exempel undantas begäranden för vissa vägar i mappen /images och alla filer i mappen /css från att returnera återställningsfilen.

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

Med följande katalogstruktur skulle till exempel ovanstående återställningsregel för navigering resultera i de resultat som beskrivs i följande tabell.

├── images
│   ├── logo.png
│   ├── headshot.jpg
│   └── screenshot.gif
│
├── css
│   └── global.css
│
└── index.html
Begäranden till... Returnerar... med statusen ...
/Om/ Filen /index.html . 200
/images/logo.png Bildfilen. 200
/images/icon.svg Filen /index.html – eftersom filnamnstillägget svg inte visas i /images/*.{png,jpg,gif} filtret. 200
/images/unknown.png Det gick inte att hitta filen. 404
/css/unknown.css Det gick inte att hitta filen. 404
/css/global.css Formatmallsfilen. 200
Alla andra filer utanför mapparna /images eller /css Filen /index.html . 200

Viktigt!

Om du migrerar från den inaktuella routes.json filen ska du inte inkludera den äldre återställningsvägen ("route": "/*") i routningsreglerna.

Globala rubriker

Avsnittet globalHeaders innehåller en uppsättning HTTP-huvuden som tillämpas på varje svar, om de inte åsidosätts av en routningshuvudregel , annars returneras union av både huvudena från vägen och de globala rubrikerna.

Se exempelkonfigurationsfilen för användningsexempel.

Om du vill ta bort en rubrik anger du värdet till en tom sträng ("").

Några vanliga användningsfall för globala rubriker är:

  • Anpassade cachelagringsregler
  • Säkerhetsprinciper
  • Kodningsinställningar
  • Cors-konfiguration (cross-origin resource sharing)

I följande exempel implementeras en anpassad CORS-konfiguration.

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

Kommentar

Globala rubriker påverkar inte API-svar. Rubriker i API-svar bevaras och returneras till klienten.

Åsidosättningar av svar

Avsnittet responseOverrides ger en möjlighet att definiera ett anpassat svar när servern annars skulle returnera en felkod. Se exempelkonfigurationsfilen för användningsexempel.

Följande HTTP-koder är tillgängliga för åsidosättning:

Statuskod Innebörd Möjlig orsak
400 Felaktig begäran Ogiltig inbjudningslänk
401 Behörighet saknas Begäran till begränsade sidor när den inte autentiseras
403 Ej tillåtet
  • Användaren är inloggad men har inte de roller som krävs för att visa sidan.
  • Användaren är inloggad men körningen kan inte hämta användarinformationen från deras identitetsanspråk.
  • Det finns för många användare som är inloggade på webbplatsen med anpassade roller, därför kan körningen inte logga in användaren.
404 Hittades inte Filen hittades inte

Följande exempelkonfiguration visar hur du åsidosätter en felkod.

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

Plattform

Avsnittet platform styr plattformsspecifika inställningar, till exempel API-språkkörningsversionen.

Välj api-språkkörningsversionen

Om du vill konfigurera api-språkkörningsversionen anger du apiRuntime egenskapen i platform avsnittet till något av följande värden som stöds.

Språkkörningsversion Operativsystem Azure Functions-version apiRuntime Värde Slutdatum för support
.NET Core 3.1 Windows 3.x dotnet:3.1 3 december 2022
.NET 6.0 pågår Windows 4.x dotnet:6.0 -
.NET 6.0 isolerad Windows 4.x dotnet-isolated:6.0 -
.NET 7.0 isolerad Windows 4.x dotnet-isolated:7.0 -
.NET 8.0 isolerad Windows 4.x dotnet-isolated:8.0 -
Node.js 12.x Linux 3.x node:12 3 december 2022
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

Om du vill ändra körningsversionen i en .NET-app ändrar du TargetFramework värdet i csproj-filen . Om du anger ett apiRuntime värde i filen staticwebapp.config.json är det valfritt, men se till att värdet matchar det du definierar i csproj-filen .

I följande exempel visas hur du uppdaterar elementet TargetFramework för NET 8.0 som API-språkkörningsversion i csproj-filen .

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

Node.js

Följande exempelkonfiguration visar hur du använder apiRuntime egenskapen för att välja Node.js 16 som API-språkkörningsversion i staticwebapp.config.json-filen.

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

Python

Följande exempelkonfiguration visar hur du använder apiRuntime egenskapen för att välja Python 3.8 som API-språkkörningsversion i staticwebapp.config.json-filen.

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

Nätverk

Avsnittet networking styr nätverkskonfigurationen för din statiska webbapp. Om du vill begränsa åtkomsten till din app anger du en lista över tillåtna IP-adressblock i allowedIpRanges. Mer information om antalet tillåtna IP-adressblock finns i Kvoter i Azure Static Web Apps.

Kommentar

Nätverkskonfiguration är endast tillgängligt i Azure Static Web Apps Standard-planen.

Definiera varje IPv4-adressblock i CIDR-notation (Classless Inter-Domain Routing). Mer information om CIDR-notation finns i Klasslös routning mellan domäner. Varje IPv4-adressblock kan ange antingen ett offentligt eller privat adressutrymme. Om du bara vill tillåta åtkomst från en enda IP-adress kan du använda /32 CIDR-blocket.

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

När ett eller flera IP-adressblock har angetts nekas begäranden som kommer från IP-adresser som inte matchar ett värde i allowedIpRanges åtkomst.

Förutom IP-adressblock kan du även ange tjänsttaggar i matrisen allowedIpRanges för att begränsa trafiken till vissa Azure-tjänster.

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

Autentisering

Mer information om hur du begränsar vägar till autentiserade användare finns i Skydda vägar med roller.

Inaktivera cacheminne för autentiserade sökvägar

Om du konfigurerar manuell integrering med Azure Front Door kanske du vill inaktivera cachelagring för dina skyddade vägar. När gränsen i företagsklass är aktiverad är cachelagring redan inaktiverad för dina skyddade vägar.

Om du vill inaktivera Azure Front Door-cachelagring för skyddade vägar lägger du till "Cache-Control": "no-store" i routningsrubrikdefinitionen.

Till exempel:

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

Vidarebefordra gateway

Avsnittet forwardingGateway konfigurerar hur en statisk webbapp nås från en vidarebefordrande gateway, till exempel ett content delivery network (CDN) eller Azure Front Door.

Kommentar

Konfiguration av vidarebefordran av gateway är endast tillgängligt i Azure Static Web Apps Standard-planen.

Tillåtna vidarebefordrade värdar

Listan allowedForwardedHosts anger vilka värdnamn som ska accepteras i sidhuvudet X-Forwarded-Host . Om en matchande domän finns i listan använder X-Forwarded-Host Static Web Apps värdet när du skapar omdirigerings-URL:er, till exempel efter en lyckad inloggning.

För att Static Web Apps ska fungera korrekt bakom en vidarebefordrande gateway måste begäran från gatewayen innehålla rätt värdnamn i X-Forwarded-Host rubriken och samma värdnamn måste anges i allowedForwardedHosts.

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

X-Forwarded-Host Om rubriken inte matchar ett värde i listan lyckas begärandena fortfarande, men huvudet används inte i svaret.

Nödvändiga rubriker

Nödvändiga rubriker är HTTP-huvuden som måste skickas med varje begäran till din webbplats. En användning av nödvändiga rubriker är att neka åtkomst till en webbplats om inte alla nödvändiga rubriker finns i varje begäran.

Följande konfiguration visar till exempel hur du kan lägga till en unik identifierare för Azure Front Door som begränsar åtkomsten till din webbplats från en specifik Azure Front Door-instans. Se självstudien Konfigurera Azure Front Door för fullständig information.

"forwardingGateway": {
  "requiredHeaders": {
    "X-Azure-FDID" : "692a448c-2b5d-4e4d-9fcc-2bc4a6e2335f"
  }
}
  • Nyckel/värde-par kan vara valfri uppsättning godtyckliga strängar
  • Nycklar är skiftlägesokänsliga
  • Värden är skiftlägeskänsliga

Avslutande snedstreck

Ett avslutande snedstreck är / i slutet av en URL. Snedstrecks-URL:en refererar konventionellt till en katalog på webbservern, medan ett icke-avslutande snedstreck anger en fil.

Sökmotorer behandlar de två URL:erna separat, oavsett om det är en fil eller en katalog. När samma innehåll återges på båda dessa URL:er hanterar din webbplats duplicerat innehåll, vilket kan påverka sökmotoroptimeringen (SEO) negativt. När statiska webbappar konfigureras uttryckligen tillämpar de en uppsättning regler för URL-normalisering och omdirigering som hjälper dig att förbättra webbplatsens prestanda och SEO.

Följande normaliserings- och omdirigeringsregler gäller för var och en av de tillgängliga konfigurationerna:

Alltid

När du ställer in trailingSlashalwaysomdirigeras alla begäranden som inte innehåller ett avslutande snedstreck till en avslutande snedstrecks-URL. Till exempel /contact omdirigeras till /contact/.

"trailingSlash": "always"
Begäranden till... Returnerar... med statusen ... och sökväg...
/Om Filen /about/index.html 301 /Om/
/Om/ Filen /about/index.html 200 /Om/
/about/index.html Filen /about/index.html 301 /Om/
/Kontakta Filen /contact.html 301 /Kontakta/
/Kontakta/ Filen /contact.html 200 /Kontakta/
/contact.html Filen /contact.html 301 /Kontakta/

Aldrig

När du anger trailingSlash till neveromdirigeras alla begäranden som slutar med ett avslutande snedstreck till en icke-räcke snedstrecks-URL. Till exempel /contact/ omdirigeras till /contact.

"trailingSlash": "never"
Begäranden till... Returnerar... med statusen ... och sökväg...
/Om Filen /about/index.html 200 /Om
/Om/ Filen /about/index.html 301 /Om
/about/index.html Filen /about/index.html 301 /Om
/Kontakta Filen /contact.html 200 /Kontakta
/Kontakta/ Filen /contact.html 301 /Kontakta
/contact.html Filen /contact.html 301 /Kontakta

Automatiskt

När du anger trailingSlash omdirigeras autoalla begäranden till mappar till en URL med ett avslutande snedstreck. Alla begäranden till filer omdirigeras till en icke-räcke snedstrecks-URL.

"trailingSlash": "auto"
Begäranden till... Returnerar... med statusen ... och sökväg...
/Om Filen /about/index.html 301 /Om/
/Om/ Filen /about/index.html 200 /Om/
/about/index.html Filen /about/index.html 301 /Om/
/Kontakta Filen /contact.html 200 /Kontakta
/Kontakta/ Filen /contact.html 301 /Kontakta
/contact.html Filen /contact.html 301 /Kontakta

För optimala webbplatsprestanda konfigurerar du en avslutande snedstrecksstrategi med hjälp av något av lägena always, nevereller auto .

När konfigurationen trailingSlash utelämnas tillämpar Static Web Apps som standard följande regler:

Begäranden till... Returnerar... med statusen ... och sökväg...
/Om Filen /about/index.html 200 /Om
/Om/ Filen /about/index.html 200 /Om/
/about/index.html Filen /about/index.html 200 /about/index.html
/Kontakta Filen /contact.html 200 /Kontakta
/Kontakta/ Filen /contact.html 301 /Kontakta
/contact.html Filen /contact.html 200 /contact.html

Exempelkonfigurationsfil

{
  "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"
  }
}

Granska följande scenarier baserat på ovanstående konfiguration.

Begäranden till... resulterar i...
/Profil Autentiserade användare hanteras i filen /profile/index.html . Oautentiserade användare omdirigeras till /login av regeln för 401 åsidosättning av svar.
/admin, /admin/, eller /admin/index.html Autentiserade användare i administratörsrollen hanteras i filen /admin/index.html. Autentiserade användare som inte har administratörsrollen får fel 4031. Oautentiserade användare omdirigeras till /login
/images/logo.png Hanterar avbildningen med en anpassad cacheregel där maxåldern är drygt 182 dagar (15 770 000 sekunder).
/api/admin GET begäranden från autentiserade användare i rollen registeredusers skickas till API:et. Autentiserade användare som inte har rollen registeredusers och oautentiserade användare får ett 401 fel.

POST, PUT, PATCHoch DELETE begäranden från autentiserade användare i administratörsrollen skickas till API:et. Autentiserade användare som inte har administratörsrollen och oautentiserade användare får ett 401 fel.
/customers/contoso Autentiserade användare som tillhör administratörs- eller customers_contoso-rollerna hanteras i filen /customers/contoso/index.html. Autentiserade användare som inte är i administratörs- eller customers_contoso-roller får fel 4031. Oautentiserade användare omdirigeras till /login.
/Logga in Oautentiserade användare uppmanas att autentisera med GitHub.
/.auth/login/twitter Eftersom auktorisering med Twitter är inaktiverat av routningsregeln 404 returneras felet, vilket återgår till att betjäna /index.html med en 200 statuskod.
/Utloggning Användare loggas ut från alla autentiseringsprovider.
/calendar/2021/01 Webbläsaren hanteras av filen /calendar.html .
/Specialerbjudanden Webbläsaren omdirigeras permanent till /deals.
/data.json Filen som hanteras med text/json MIME-typen.
/about, eller en mapp som matchar routningsmönster på klientsidan Filen /index.html hanteras med en 200 statuskod.
En obefintlig fil i mappen /images/ Ett 404 fel.

1 Du kan ange en anpassad felsida med hjälp av en regel för åsidosättning av svar.

Begränsningar

Följande begränsningar finns för staticwebapp.config.json-filen.

  • Maximal filstorlek är 20 kB
  • Maximalt 50 distinkta roller

I artikeln Kvoter finns allmänna begränsningar och begränsningar.

Nästa steg