Konfigurace sdílení prostředků mezi zdroji (CORS)

PLATÍ PRO: NoSQL

Sdílení prostředků mezi zdroji (CORS) je funkce HTTP, která umožňuje webové aplikaci běžící pod jednou doménou přistupovat k prostředkům v jiné doméně. Webové prohlížeče implementují omezení zabezpečení označované jako zásady stejného původu, které brání webové stránce v volání rozhraní API v jiné doméně. CORS ale poskytuje bezpečný způsob, jak umožnit původní doméně volat rozhraní API v jiné doméně. Rozhraní API pro NoSQL ve službě Azure Cosmos DB teď podporuje sdílení prostředků mezi zdroji (CORS) pomocí hlavičky allowedOrigins. Po povolení podpory CORS pro váš účet služby Azure Cosmos DB se vyhodnocují jenom ověřené požadavky, aby se zjistilo, jestli jsou povolené podle vámi zadaných pravidel.

Nastavení sdílení prostředků mezi zdroji (CORS) můžete nakonfigurovat z Azure Portal nebo ze šablony Azure Resource Manager. Pro účty Azure Cosmos DB používající rozhraní API for NoSQL podporuje Azure Cosmos DB knihovnu JavaScriptu, která funguje v prostředích Node.js i v prohlížeči. Tato knihovna teď může využívat podporu CORS při použití režimu brány. K použití této funkce není potřeba žádná konfigurace na straně klienta. Díky podpoře CORS můžou prostředky z prohlížeče přistupovat přímo ke službě Azure Cosmos DB prostřednictvím knihovny JavaScriptu nebo přímo z rozhraní REST API pro jednoduché operace.

Poznámka

Podpora CORS je použitelná a podporovaná jenom pro Azure Cosmos DB for NoSQL. Nevztahuje se na rozhraní API služby Azure Cosmos DB pro Cassandra, Gremlin nebo MongoDB, protože tyto protokoly nepoužívají protokol HTTP pro komunikaci klient-server.

Povolení podpory CORS z Azure Portal

Pokud chcete povolit sdílení prostředků mezi zdroji pomocí Azure Portal, postupujte následovně:

  1. Přejděte na svůj účet Služby Azure Cosmos DB. Otevřete stránku CORS .

  2. Zadejte seznam zdrojů oddělených čárkami, který může provádět volání vašeho účtu služby Azure Cosmos DB mezi zdroji. Například https://www.mydomain.com, https://mydomain.com, . https://api.mydomain.com Můžete také použít zástupný znak *, abyste povolili všechny zdroje a vyberte Odeslat.

    Poznámka

    V současné době nemůžete jako součást názvu domény používat zástupné é dom. Například https://*.mydomain.net formát se zatím nepodporuje.

    Povolení sdílení prostředků mezi zdroji pomocí Azure Portal

Povolení podpory CORS ze šablony Resource Manager

Pokud chcete cors povolit pomocí šablony Resource Manager, přidejte do jakékoli existující šablony oddíl cors s vlastností allowedOrigins. Tento KÓD JSON je příkladem šablony, která vytvoří nový účet služby Azure Cosmos DB s povoleným CORS.

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

Použití javascriptové knihovny služby Azure Cosmos DB z prohlížeče

Javascriptová knihovna služby Azure Cosmos DB má v současnosti k dispozici pouze verzi knihovny CommonJS dodávaná se svým balíčkem. Pokud chcete tuto knihovnu používat z prohlížeče, musíte k vytvoření knihovny kompatibilní s prohlížečem použít nástroj, například Kumulativní aktualizace nebo Webpack. Některé knihovny Node.js by měly mít napodobení prohlížeče. Toto je příklad konfiguračního souboru webpacku, který má potřebná nastavení napodobení.

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

Tady je ukázka kódu , která používá TypeScript a Webpack s knihovnou sady JavaScript SDK služby Azure Cosmos DB. Ukázka vytvoří aplikaci Todo, která odesílá aktualizace v reálném čase při vytváření nových položek.

Osvědčeným postupem je nepoužívat primární klíč ke komunikaci se službou Azure Cosmos DB z prohlížeče. Místo toho ke komunikaci používejte tokeny prostředků. Další informace o tokenech prostředků najdete v článku Zabezpečení přístupu ke službě Azure Cosmos DB .

Další kroky

Další informace o dalších způsobech zabezpečení účtu služby Azure Cosmos DB najdete v následujících článcích: