Share via


Cross-Origin Resource Sharing (CORS) configureren

VAN TOEPASSING OP: NoSQL

Cors (Cross-Origin Resource Sharing) is een HTTP-functie waarmee een webtoepassing die wordt uitgevoerd onder het ene domein toegang heeft tot resources in een ander domein. Webbrowsers implementeren een beveiligingsbeperking die bekend staat als same-origin-beleid dat voorkomt dat een webpagina API's in een ander domein aanroept. CORS biedt echter een veilige manier om het oorspronkelijke domein toe te staan API's in een ander domein aan te roepen. De API voor NoSQL in Azure Cosmos DB ondersteunt nu CORS (Cross-Origin Resource Sharing) met behulp van de header allowedOrigins. Nadat u de CORS-ondersteuning voor uw Azure Cosmos DB-account hebt ingeschakeld, worden alleen geverifieerde aanvragen geƫvalueerd om te bepalen of ze zijn toegestaan volgens de regels die u hebt opgegeven.

U kunt de instelling CORS (Cross-Origin Resource Sharing) configureren vanuit de Azure Portal of vanuit een Azure Resource Manager-sjabloon. Voor Azure Cosmos DB-accounts die gebruikmaken van de API voor NoSQL, ondersteunt Azure Cosmos DB een JavaScript-bibliotheek die werkt in zowel Node.js- als browseromgevingen. Deze bibliotheek kan nu gebruikmaken van CORS-ondersteuning bij het gebruik van de gatewaymodus. Er is geen configuratie aan de clientzijde nodig om deze functie te gebruiken. Met CORS-ondersteuning hebben resources vanuit een browser rechtstreeks toegang tot Azure Cosmos DB via de JavaScript-bibliotheek of rechtstreeks vanuit de REST API voor eenvoudige bewerkingen.

Notitie

CORS-ondersteuning is alleen van toepassing en wordt ondersteund voor De Azure Cosmos DB voor NoSQL. Het is niet van toepassing op de Azure Cosmos DB-API's voor Cassandra, Gremlin of MongoDB, omdat deze protocollen geen http gebruiken voor client-servercommunicatie.

CORS-ondersteuning inschakelen vanuit Azure Portal

Volg deze stappen om Cross-Origin Resource Sharing in te schakelen met behulp van Azure Portal:

  1. Navigeer naar uw Azure Cosmos DB-account. Open de CORS-pagina .

  2. Geef een door komma's gescheiden lijst met oorsprongen op die cross-origin-aanroepen naar uw Azure Cosmos DB-account kunnen uitvoeren. Bijvoorbeeld https://www.mydomain.com, https://mydomain.com, https://api.mydomain.com. U kunt ook een jokerteken '*' gebruiken om alle origins toe te staan en Verzenden te selecteren.

    Notitie

    Op dit moment kunt u geen jokertekens gebruiken als onderdeel van de domeinnaam. De indeling wordt bijvoorbeeld https://*.mydomain.net nog niet ondersteund.

    Cross Origin-resource delen inschakelen met behulp van Azure Portal

CORS-ondersteuning inschakelen vanuit Resource Manager sjabloon

Als u CORS wilt inschakelen met behulp van een Resource Manager sjabloon, voegt u de sectie cors met de eigenschap allowedOrigins toe aan een bestaande sjabloon. Deze JSON is een voorbeeld van een sjabloon waarmee een nieuw Azure Cosmos DB-account wordt gemaakt waarvoor CORS is ingeschakeld.

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

De Azure Cosmos DB JavaScript-bibliotheek gebruiken vanuit een browser

Momenteel wordt in de Azure Cosmos DB JavaScript-bibliotheek alleen de CommonJS-versie van de bibliotheek meegeleverd met het bijbehorende pakket. Als u deze bibliotheek vanuit de browser wilt gebruiken, moet u een hulpprogramma zoals Rollup of Webpack gebruiken om een browsercompatibele bibliotheek te maken. Bepaalde Node.js bibliotheken moeten over browsersimuleerde bibliotheken beschikken. Dit is een voorbeeld van een webpack-configuratiebestand met de benodigde mock-instellingen.

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")
  }
};

Hier volgt een codevoorbeeld dat gebruikmaakt van TypeScript en Webpack met de Azure Cosmos DB JavaScript SDK-bibliotheek. Het voorbeeld bouwt een Taken-app die realtime updates verzendt wanneer er nieuwe items worden gemaakt.

Gebruik als best practice niet de primaire sleutel om vanuit de browser te communiceren met Azure Cosmos DB. Gebruik in plaats daarvan resourcetokens om te communiceren. Zie het artikel Toegang tot Azure Cosmos DB beveiligen voor meer informatie over resourcetokens.

Volgende stappen

Raadpleeg de volgende artikelen voor meer informatie over andere manieren om uw Azure Cosmos DB-account te beveiligen: