Konfigurera resursdelning mellan ursprung (CORS)

GÄLLER FÖR: NoSQL

Resursdelning mellan ursprung (CORS) ä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. Webbläsare implementerar en säkerhetsbegränsning som kallas samma ursprungsprincip som förhindrar att en webbsida anropar API:er i en annan domän. CORS är dock ett säkert sätt att tillåta ursprungsdomänen att anropa API:er i en annan domän. API:et för NoSQL i Azure Cosmos DB stöder nu resursdelning mellan ursprung (CORS) med hjälp av rubriken "allowedOrigins". När du har aktiverat CORS-stödet för ditt Azure Cosmos DB-konto utvärderas endast autentiserade begäranden för att avgöra om de tillåts enligt de regler som du har angett.

Du kan konfigurera CORS-inställningen (Cross-origin resource sharing) från Azure Portal eller från en Azure Resource Manager-mall. För Azure Cosmos DB-konton som använder API:et för NoSQL stöder Azure Cosmos DB ett JavaScript-bibliotek som fungerar i både Node.js- och webbläsarbaserade miljöer. Det här biblioteket kan nu dra nytta av CORS-stöd när du använder gatewayläge. Det behövs ingen konfiguration på klientsidan för att använda den här funktionen. Med CORS-stöd kan resurser från en webbläsare direkt komma åt Azure Cosmos DB via JavaScript-biblioteket eller direkt från REST-API :et för enkla åtgärder.

Anteckning

CORS-stöd är endast tillämpligt och stöds för Azure Cosmos DB for NoSQL. Det gäller inte för Azure Cosmos DB-API:er för Cassandra, Gremlin eller MongoDB, eftersom dessa protokoll inte använder HTTP för klient-serverkommunikation.

Aktivera CORS-stöd från Azure Portal

Följ de här stegen för att aktivera resursdelning mellan ursprung med hjälp av Azure Portal:

  1. Gå till ditt Azure Cosmos DB-konto. Öppna CORS-sidan .

  2. Ange en kommaavgränsad lista över ursprung som kan göra korsande anrop till ditt Azure Cosmos DB-konto. Till exempel https://www.mydomain.com, https://mydomain.com, https://api.mydomain.com. Du kan också använda jokertecknet "*" för att tillåta alla ursprung och välja Skicka.

    Anteckning

    För närvarande kan du inte använda jokertecken som en del av domännamnet. Till exempel https://*.mydomain.net stöds inte format ännu.

    Aktivera resursdelning mellan ursprung med hjälp av Azure Portal

Aktivera CORS-stöd från Resource Manager mall

Om du vill aktivera CORS med hjälp av en Resource Manager mall lägger du till avsnittet "cors" med egenskapen "allowedOrigins" i alla befintliga mallar. Den här JSON-filen är ett exempel på en mall som skapar ett nytt Azure Cosmos DB-konto med CORS aktiverat.

{
  "type": "Microsoft.DocumentDB/databaseAccounts",
  "name": "[variables('accountName')]",
  "apiVersion": "2019-08-01",
  "location": "[parameters('location')]",
  "kind": "GlobalDocumentDB",
  "properties": {
    "consistencyPolicy": "[variables('consistencyPolicy')[parameters('defaultConsistencyLevel')]]",
    "locations": "[variables('locations')]",
    "databaseAccountOfferType": "Standard",
    "cors": [
      {
        "allowedOrigins": "https://contoso.com"
      }
    ]
  }
}

Använda Azure Cosmos DB JavaScript-biblioteket från en webbläsare

I dag har Azure Cosmos DB JavaScript-biblioteket endast CommonJS-versionen av biblioteket som levereras med paketet. Om du vill använda det här biblioteket från webbläsaren måste du använda ett verktyg som Sammanslagning eller Webpack för att skapa ett webbläsarkompatibelt bibliotek. Vissa Node.js bibliotek bör ha webbläsarutseenden för dem. Det här är ett exempel på en webpack-konfigurationsfil som har nödvändiga falska inställningar.

const path = require("path");

module.exports = {
  entry: "./src/index.ts",
  devtool: "inline-source-map",
  node: {
    net: "mock",
    tls: "mock"
  },
  output: {
    filename: "bundle.js",
    path: path.resolve(__dirname, "dist")
  }
};

Här är ett kodexempel som använder TypeScript och Webpack med Azure Cosmos DB JavaScript SDK-biblioteket. Exemplet skapar en Todo-app som skickar realtidsuppdateringar när nya objekt skapas.

Vi rekommenderar att du inte använder primärnyckeln för att kommunicera med Azure Cosmos DB från webbläsaren. Använd i stället resurstoken för att kommunicera. Mer information om resurstoken finns i artikeln Skydda åtkomst till Azure Cosmos DB .

Nästa steg

Mer information om andra sätt att skydda ditt Azure Cosmos DB-konto finns i följande artiklar: