Nginx

Hur man använder CORS med Nginx

Hur man använder CORS med Nginx

Vad är CORS

CORS, även känd som resursdelning mellan korsor, är en teknik som används i moderna webbläsare som styr åtkomst till resurser som finns på en webbserver. CORS använder ytterligare rubriker som ursprung, åtkomstkontroll-ursprung och många fler för att avgöra om den begärda resursen har behörighet att skickas till webbläsaren. Det primära syftet med CORS är att förhindra att en webbapplikation som körs i en webbläsare får åtkomst till resurser som är värd i ett annat ursprung när det inte finns någon behörighet, vad det innebär att webbapplikationen inte kan ladda ner resurser, som bilder, skript, css som något innehåll osv. när de inte är värd i samma ursprung (vanligtvis bör alla vara i samma domän) som webbapplikationen såvida inte servern är konfigurerad för att tillåta detta beteende. Genom att ha denna implementering i en webbläsare kan användare skydda sin data från obehöriga parter. En hacker kan i hemlighet modifiera en webbsida medan den är mitt i anslutningen för att störa användarens verksamhet eller få tillgång till värdefull data. Det finns dock fördelar med CORS, till exempel att det gör det möjligt för utvecklare att ladda resurser från ett annat ursprung på grund av kostnadseffektivitet eller helt enkelt bekvämlighet. I så fall måste de ändra sin webbserver för att tillåta sådana förfrågningar. Den här artikeln visar hur du enkelt kan göra det på en Nginx-webbserver.

Vad som utlöser en CORS-begäran

Inte alla förfrågningar utlöser en CORS-begäran, eftersom resurserna vanligtvis är värd samma ursprung som webbapplikationen. Om det är annorlunda utlöses CORS. CORS har två typer av förfrågningar, enkel begäran och CORS förflyttad begäran.

Simple Request fungerar som en vanlig begäran, webbläsaren skickar en begäran till servern om att ladda ner en viss resurs när användaren initierade den, sedan kontrollerar webbservern begärans ursprung, jämför det med reglerna på webbservern, om matchas tillhandahålls resursen. Denna begäranstyp använder OIRIGN- och ACCESS-CONTROL-ALLOW-ORIGIN-rubriker för att avgöra om resursen ska tillhandahållas eller inte. Enkel begäran utlöses endast om förfrågningsmetoder som GET, HEAD, POST används och rubriker som Accept, Accept-Language, Content-Language, Content-Type, DPR, Downlink, Save-Data, Viewport-Width, Width används. Även då utlöser inte alla innehållstyper en enkel begäran. Här utlöser endast formkodningstyper en enkel begäran.

Förflyttad begäranstyp är ganska annorlunda eftersom det inte finns någon direkt tillgång till resurserna i den första omgången. När ovannämnda villkor ändras på något sätt, antingen genom att använda en annan begäranhuvud eller en annan innehållstyp, utlöses en förflyttad begäran. I förflyttade förfrågningar ser webbläsaren först till att den kan komma åt resursen genom att kommunicera med webbläsaren, sedan när webbläsaren svarar med okej (HTTP 200) svar, skickar den en ny begäran om att ladda ner resursen. Den använder HTTP OPTION-förfrågningsmetod för att initiera den första förfrågan, sedan använder den GET, POST som förfrågningstyper för att ladda ner resurserna.

Hur man konfigurerar Nginx för att stödja CORS-förfrågningar

Det här avsnittet visar hur du konfigurerar en nginx-webbserver för att tillåta resursdelning mellan olika ursprung. Detta kan bara göras om utvecklaren har åtkomst till webbservern, eftersom det innebär att Nginx konfigurationsfil ändras.

Använd följande enkla kodavsnitt för att tillåta CORS-förfrågningar. Detta måste kopieras till standardfilen för nginx-tjänsten i Ubuntu eller någon annan plattform.

plats \
if ($ request_method = 'OPTIONS')
add_header 'Access-Control-Allow-Origin' 'https: // localhost;
add_header 'Access-Control-Allow-Methods "POST, OPTIONS';
add_header 'Access-Control-Max-Age' 1728000;
add_header 'Content-Type "text / plain; charset = utf-8';
retur 204;

if ($ request_method = 'POST')
add_header 'Access-Control-Allow-Origin "https: // localhost;
add_header 'Access-Control-Allow-Methods' 'POST';

Grundkodavsnittet går som ovan. Den innehåller direktiv som request_method, add_header för att identifiera begäranstypen och ställa in rubriken för svaret för att webbläsaren ska läsa respektive. Rubriken Access-control-allow-origin definierar vilket ursprung resursen har åtkomst till, till exempel om en webbapplikation som är värd i github vill komma åt en bild som är värd i myOwnServer.com, då ska github-URL: en användas som värdet för Access-control-allow-origin-direktivet i myOwnServer.com, närhelst webbapplikationen i github skickar förfrågningar till myOwnServer.com för att ladda ner bildfilen får alla dessa begärda tillstånd. Åtkomstkontroll-tillåt-metodhuvud definierar vilken begäran som webbapplikationen som skickar förfrågningarna stöder, och resten av rubrikerna är för sin högsta ålder för att cacha förfrågningarna och den innehållstyp som stöds.

Såsom beskrivits ovan skickar webbläsaren en gång en begäran om att ladda ner resurserna när OPTION-begäran slutfördes om den första begäran lyckades, dess rubriker ställs in i den första begäran_metoden om parenteser.

Utöver de ovan nämnda direktiven finns det några andra viktiga direktiv i Nginx som kan användas i CORS-förfrågningar. Ett av de viktigaste direktiven är access-control-allow-headers. Vad det gör är att ställa in svarshuvudet med tillåtna rubriknamn för webbläsaren för att verifiera. En webbapplikation kan ha sina egna rubriker för olika ändamål, och om sådana rubriker finns i efterföljande förfrågningar efter den första OPTIONS-begäran, bör alla dessa rubriker tillåtas av webbservern innan den begärda resursen delas.

Det är viktigt att detta kodavsnitt är på rätt plats i Nginx-standardfilen, eftersom Nginx kör olika platsblock beroende på den matchade URL: en, om sådant platsblock inte innehåller detta kodavsnitt, körs det inte alls, och därför är det viktigt att använda detta i alla platsblock för den säkra sidan. Några av de viktiga platsblocken är bilder, PHP (~ \.php $), CSS, etc. ... block.

När nämnda kodavsnitt har sparats, spara Nginx-filen och ladda om Nginx-tjänsten till ändringar för att träda i kraft.

Slutsats

CORS, är känt som resursdelning mellan korsor och är en teknik för att kontrollera tillgången till resurser. Dessa resurser kan vara vilken fil som helst från bild till javascriptfil. Det primära syftet med CORS är att skärpa säkerheten för webbapplikationer för att förhindra människan i mitten attacker. Dock kan CORS också ha fördelar. I så fall måste CORS vara på eftersom det inte är tillåtet som standard. Den grundläggande CORS-förfrågningstypen är enkel förfråganstyp, den använder endast ORIGIN- och ACCESS-CONTROL-ALLOW-ORIGIN-direktiven, och med den hjälp kan Nginx bevilja webbläsarens tillstånd att få åtkomst till den begärda resursen beroende på ursprung. Hur som helst är CORS ganska användbart och bör användas försiktigt.

Strid om Wesnoth 1.13.6 Utveckling släppt
Strid om Wesnoth 1.13.6 släpptes förra månaden, är den sjätte utvecklingsversionen i 1.13.x-serien och den levererar ett antal förbättringar, framför ...
Så här installerar du League Of Legends på Ubuntu 14.04
Om du gillar League of Legends är det här en möjlighet för dig att testa League of Legends. Observera att LOL stöds på PlayOnLinux om du är en Linux-a...
Installera det senaste OpenRA-strategispelet på Ubuntu Linux
OpenRA är en Libre / Free Real Time Strategy-spelmotor som återskapar de tidiga Westwood-spelen som det klassiska Command & Conquer: Red Alert. Distri...