Forrásközi erőforrás-megosztás konfigurálása (CORS)

A KÖVETKEZŐRE VONATKOZIK: NoSQL

A forrásközi erőforrás-megosztás (CORS) egy HTTP-funkció, amely lehetővé teszi, hogy az egyik tartományban futó webalkalmazás hozzáférjen egy másik tartományban lévő erőforrásokhoz. A webböngészők olyan, azonos eredetű szabályzatként ismert biztonsági korlátozást implementálnak, amely megakadályozza, hogy egy weblap más tartományban hívja meg az API-kat. A CORS azonban biztonságos módot biztosít arra, hogy a forrástartomány meghívja az API-kat egy másik tartományban. Az Azure Cosmos DB NoSQL-hez készült API mostantól támogatja a különböző eredetű erőforrások megosztását (CORS) az "allowedOrigins" fejléc használatával. Miután engedélyezte a CORS-támogatást az Azure Cosmos DB-fiókhoz, csak a hitelesített kérések lesznek kiértékelve annak megállapítására, hogy azokat a megadott szabályok szerint engedélyezi-e a rendszer.

A Forrásközi erőforrás-megosztás (CORS) beállítást a Azure Portal vagy egy Azure Resource Manager-sablonból konfigurálhatja. A NoSQL API-t használó Azure Cosmos DB-fiókok esetében az Azure Cosmos DB támogatja a JavaScript-kódtárat, amely Node.js és böngészőalapú környezetben is működik. Ez a kódtár mostantól kihasználhatja a CORS-támogatás előnyeit az Átjáró mód használatakor. A szolgáltatás használatához nincs szükség ügyféloldali konfigurációra. A CORS-támogatással a böngésző erőforrásai közvetlenül hozzáférhetnek az Azure Cosmos DB-hez a JavaScript-kódtáron keresztül vagy közvetlenül a REST API-ból az egyszerű műveletekhez.

Megjegyzés

A CORS-támogatás csak az Azure Cosmos DB for NoSQL esetében alkalmazható és támogatott. Ez nem alkalmazható a Cassandra, a Gremlin vagy a MongoDB Azure Cosmos DB API-jaira, mivel ezek a protokollok nem használnak HTTP-t az ügyfél-kiszolgáló kommunikációhoz.

CORS-támogatás engedélyezése Azure Portal

Kövesse az alábbi lépéseket a forrásközi erőforrás-megosztás engedélyezéséhez a Azure Portal használatával:

  1. Lépjen az Azure Cosmos DB-fiókjához. Nyissa meg a CORS lapot.

  2. Adjon meg egy vesszővel tagolt forráslistát, amely keresztirányú hívásokat indíthat az Azure Cosmos DB-fiókba. Például: https://www.mydomain.com, https://mydomain.com, https://api.mydomain.com. Használhat "*" helyettesítő karaktert is az összes forrás engedélyezéséhez, és válassza a Küldés lehetőséget.

    Megjegyzés

    Jelenleg nem használhat helyettesítő karaktereket a tartománynév részeként. Például https://*.mydomain.net a formátum még nem támogatott.

    Forrásközi erőforrás-megosztás engedélyezése Azure Portal

CORS-támogatás engedélyezése Resource Manager sablonból

Ha Resource Manager sablonnal szeretné engedélyezni a CORS-t, adja hozzá a "cors" szakaszt az "allowedOrigins" tulajdonsággal bármely meglévő sablonhoz. Ez a JSON egy példa egy sablonra, amely létrehoz egy új Azure Cosmos DB-fiókot, amelyen engedélyezve van a 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"
      }
    ]
  }
}

Az Azure Cosmos DB JavaScript-kódtár használata böngészőből

Ma az Azure Cosmos DB JavaScript-kódtár csak a kódtár CommonJS-verzióját szállítja a csomagjával. Ha ezt a kódtárat a böngészőből szeretné használni, egy olyan eszközt kell használnia, mint a Rollup vagy a Webpack, hogy létrehozhasson egy böngészőkompatibilis tárat. Bizonyos Node.js-kódtáraknak böngészőbeli makettekkel kell rendelkezniük. Ez egy példa egy webpack konfigurációs fájlra, amely rendelkezik a szükséges szimulált beállításokkal.

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

Íme egy kódminta , amely TypeScriptet és Webpackot használ az Azure Cosmos DB JavaScript SDK-kódtárával. A minta létrehoz egy Todo-alkalmazást, amely valós idejű frissítéseket küld új elemek létrehozásakor.

Ajánlott eljárásként ne használja az elsődleges kulcsot az Azure Cosmos DB-vel való kommunikációhoz a böngészőből. Ehelyett használjon erőforrás-jogkivonatokat a kommunikációhoz. További információ az erőforrás-jogkivonatokról: Az Azure Cosmos DB-hez való hozzáférés biztonságossá tétele .

Következő lépések

Az Azure Cosmos DB-fiók védelmének egyéb módjairól az alábbi cikkekben olvashat: