Konfigurace sdílení prostředků mezi zdroji (CORS)
PLATÍ PRO: NoSQL
Sdílení prostředků napříč 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í známé 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í pouze ověřené požadavky, aby bylo možné určit, jestli jsou povolené podle zadaných pravidel.
Nastavení sdílení prostředků mezi zdroji (CORS) můžete nakonfigurovat z webu Azure Portal nebo ze šablony Azure Resource Manageru. Pro účty Azure Cosmos DB využívající rozhraní API for NoSQL podporuje Azure Cosmos DB javascriptovou knihovnu, která funguje v Node.js i v prostředích založených na prohlížeči. Tato knihovna teď může využít podporu CORS při použití režimu brány. K použití této funkce není nutná žádná konfigurace na straně klienta. S podporou CORS můžou prostředky z prohlížeče přímo přistupovat ke službě Azure Cosmos DB prostřednictvím javascriptové knihovny nebo přímo z rozhraní REST API pro jednoduché operace.
Poznámka:
Podpora CORS je použitelná a podporovaná pouze pro Službu 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 mezi klientem a serverem.
Povolení podpory CORS na webu Azure Portal
Pokud chcete povolit sdílení prostředků mezi zdroji pomocí webu Azure Portal, postupujte takto:
Přejděte ke svému účtu služby Azure Cosmos DB. Otevřete stránku CORS.
Zadejte čárkami oddělený seznam původů, který může provádět volání mezi zdroji vašeho účtu služby Azure Cosmos DB. 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 původy a vybrali Odeslat.Poznámka:
V současné době nemůžete jako součást názvu domény používat zástupné cardy. Například
https://*.mydomain.net
formát ještě není podporovaný.
Povolení podpory CORS ze šablony Resource Manageru
Pokud chcete CORS povolit pomocí šablony Resource Manageru, přidejte do jakékoli existující šablony oddíl "cors" s vlastností allowedOrigins. Tento 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 Azure Cosmos DB z prohlížeče
Knihovna JavaScriptu služby Azure Cosmos DB má v současnosti k dispozici pouze verzi Knihovny CommonJS, která je součástí balíčku. Pokud chcete použít tuto knihovnu z prohlížeče, musíte k vytvoření knihovny kompatibilní s prohlížečem použít nástroj, například kumulativní balíček nebo webpack. Některé knihovny Node.js by pro ně 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.
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: