Använda Azure CDN med CORS
Viktigt!
Azure CDN Standard från Microsoft (klassisk) dras tillbaka den 30 september 2027. För att undvika avbrott i tjänsten är det viktigt att du migrerar din Azure CDN Standard från Microsofts (klassiska) profiler till Azure Front Door Standard- eller Premium-nivån senast den 30 september 2027. Mer information finns i Azure CDN Standard från Microsoft (klassisk) tillbakadragning.
Azure CDN från Edgio dras tillbaka den 4 november 2025. Du måste migrera din arbetsbelastning till Azure Front Door före det här datumet för att undvika avbrott i tjänsten. Mer information finns i Azure CDN från vanliga frågor och svar om Edgio-pensionering.
Vad är CORS?
CORS (resursdelning mellan ursprung) är en HTTP-funktion som gör att ett webbprogram som körs under en domän kan komma åt resurser i en annan domän. För att minska risken för skriptattacker mellan webbplatser implementerar alla moderna webbläsare en säkerhetsbegränsning som kallas principen för samma ursprung. Den här begränsningen förhindrar att en webbsida anropar API:er i en annan domän. CORS är ett säkert sätt att tillåta att ett ursprung (ursprungsdomänen) anropar API:er i ett annat ursprung.
Hur det fungerar
Det finns två typer av CORS-begäranden, enkla begäranden och komplexa begäranden.
För enkla begäranden:
Webbläsaren skickar CORS-begäran med en extra origin HTTP-begäranderubrik. Värdet för begärandehuvudet är det ursprung som hanterade den överordnade sidan, som definieras som kombinationen av protokoll, domän och port. När en sida från HTTPS://www.contoso.com försök att komma åt en användares data i fabrikam.com ursprung skickas följande begärandehuvud till fabrikam.com:
Origin: https://www.contoso.com
Servern kan svara med någon av följande rubriker:
Ett Access-Control-Allow-Origin-huvud i svaret som anger vilken ursprungsplats som tillåts. Till exempel:
Access-Control-Allow-Origin: https://www.contoso.com
En HTTP-felkod, till exempel 403 om servern inte tillåter begäran om korsande ursprung efter att ha kontrollerat ursprungsrubriken
En Access-Control-Allow-Origin-rubrik med ett jokertecken som tillåter alla ursprung:
Access-Control-Allow-Origin: *
För komplexa begäranden:
En komplex begäran är en CORS-begäran där webbläsaren krävs för att skicka en förhandsbegäran (dvs. en preliminär avsökning) innan den faktiska CORS-begäran skickas. Preflight-begäran ber om serverbehörighet om den ursprungliga CORS-begäran kan fortsätta och är en OPTIONS
begäran till samma URL.
Dricks
Mer information om CORS-flöden och vanliga fallgropar finns i guiden till CORS för REST-API:er.
Scenarier med jokertecken eller enskilt ursprung
CORS på Azure CDN fungerar automatiskt utan extra konfigurationer när huvudet Access-Control-Allow-Origin är inställt på jokertecken (*) eller ett enda ursprung. CDN cachelagrade det första svaret och efterföljande begäranden använder samma rubrik.
Om begäranden redan har gjorts till CDN innan CORS har angetts för ditt ursprung måste du rensa innehåll på slutpunktsinnehållet för att läsa in innehållet igen med huvudet Access-Control-Allow-Origin .
Scenarier med flera ursprung
Om du behöver tillåta att en specifik lista över ursprung tillåts för CORS blir det lite mer komplicerat. Problemet uppstår när CDN cachelagrar huvudet Access-Control-Allow-Origin för det första CORS-ursprunget. När ett annat CORS-ursprung gör en efterföljande begäran, hanterar CDN den cachelagrade rubriken Access-Control-Allow-Origin , som inte matchar. Det finns flera sätt att åtgärda det här problemet.
Azure CDN-standardprofiler
På Azure CDN Standard från Microsoft kan du skapa en regel i standardregelmotorn för att kontrollera origin-huvudet på begäran. Om det är ett giltigt ursprung anger regeln huvudet Access-Control-Allow-Origin med önskat värde. I det här fallet ignoreras huvudet Access-Control-Allow-Origin från filens ursprungsserver och CDN:s regelmotor hanterar helt det tillåtna CORS-ursprunget.
Dricks
Du kan lägga till ytterligare åtgärder i regeln för att ändra ytterligare svarshuvuden, till exempel Access-Control-Allow-Methods.
Azure CDN Premium från Edgio
Med hjälp av Edgio Premium-regelmotorn måste du skapa en regel för att kontrollera origin-huvudet på begäran. Om det är ett giltigt ursprung anger din regel huvudet Access-Control-Allow-Origin med ursprunget som anges i begäran. Om ursprunget som anges i ursprungsrubriken inte tillåts bör regeln utelämna rubriken Access-Control-Allow-Origin, vilket gör att webbläsaren avvisar begäran.
Det finns två sätt att lösa det här problemet med Premium-regelmotorn. I båda fallen ignoreras huvudet Access-Control-Allow-Origin från filens ursprungsserver och CDN:s regelmotor hanterar helt det tillåtna CORS-ursprunget.
Ett reguljärt uttryck med alla giltiga ursprung
I det här fallet skapar du ett reguljärt uttryck som innehåller alla ursprung som du vill tillåta:
https?:\/\/(www\.contoso\.com|contoso\.com|www\.microsoft\.com|microsoft.com\.com)$
Dricks
Azure CDN Premium från Edgio använder Perl-kompatibla reguljära uttryck som motor för reguljära uttryck. Du kan använda ett verktyg som Reguljära uttryck 101 för att verifiera ditt reguljära uttryck. Observera att tecknet "/" är giltigt i reguljära uttryck och inte behöver undvikas, men att undvika det tecknet anses vara en bästa praxis och förväntas av vissa regex-validerare.
Om det reguljära uttrycket matchar ersätter regeln rubriken Access-Control-Allow-Origin (om någon) från ursprunget med det ursprung som skickade begäran. Du kan också lägga till extra CORS-huvuden, till exempel Access-Control-Allow-Methods.
Begärandehuvudregel för varje ursprung.
I stället för reguljära uttryck kan du i stället skapa en separat regel för varje ursprung som du vill tillåta med matchningsvillkoret För begäranderubrik jokertecken. Precis som med metoden med reguljära uttryck anger regelmotorn enbart CORS-huvudena.
Dricks
I exemplet instruerar användningen av jokertecknet * regelmotorn att matcha både HTTP och HTTPS.