Konfigurowanie współużytkowania zasobów między źródłami (CORS)
DOTYCZY: NoSQL
Współużytkowanie zasobów między źródłami (CORS) to funkcja PROTOKOŁU HTTP, która umożliwia aplikacji internetowej działającej w ramach jednej domeny uzyskiwanie dostępu do zasobów w innej domenie. Przeglądarki internetowe implementują ograniczenie zabezpieczeń znane jako zasady tego samego źródła, które uniemożliwia stronie internetowej wywoływanie interfejsów API w innej domenie. Mechanizm CORS zapewnia jednak bezpieczny sposób zezwalania domenie pochodzenia na wywoływanie interfejsów API w innej domenie. Interfejs API dla noSQL w usłudze Azure Cosmos DB obsługuje teraz współużytkowanie zasobów między źródłami (CORS) przy użyciu nagłówka "allowedOrigins". Po włączeniu obsługi mechanizmu CORS dla konta usługi Azure Cosmos DB tylko uwierzytelnione żądania są oceniane w celu określenia, czy są dozwolone zgodnie z określonymi regułami.
Ustawienie Współużytkowanie zasobów między źródłami (CORS) można skonfigurować na podstawie Azure Portal lub szablonu usługi Azure Resource Manager. W przypadku kont usługi Azure Cosmos DB korzystających z interfejsu API noSQL usługa Azure Cosmos DB obsługuje bibliotekę Języka JavaScript, która działa zarówno w środowiskach Node.js, jak i w środowiskach opartych na przeglądarce. Ta biblioteka może teraz korzystać z obsługi mechanizmu CORS podczas korzystania z trybu bramy. Do korzystania z tej funkcji nie jest wymagana żadna konfiguracja po stronie klienta. Dzięki obsłudze mechanizmu CORS zasoby z przeglądarki mogą uzyskiwać bezpośredni dostęp do usługi Azure Cosmos DB za pośrednictwem biblioteki Języka JavaScript lub bezpośrednio z interfejsu API REST na potrzeby prostych operacji.
Uwaga
Obsługa mechanizmu CORS ma zastosowanie tylko do usługi Azure Cosmos DB for NoSQL i jest obsługiwana. Nie ma zastosowania do interfejsów API usługi Azure Cosmos DB dla systemów Cassandra, Gremlin lub MongoDB, ponieważ te protokoły nie używają protokołu HTTP do komunikacji klient-serwer.
Włączanie obsługi mechanizmu CORS z poziomu Azure Portal
Wykonaj następujące kroki, aby włączyć udostępnianie zasobów między źródłami przy użyciu Azure Portal:
Przejdź do konta usługi Azure Cosmos DB. Otwórz stronę CORS .
Określ rozdzielaną przecinkami listę źródeł, które mogą wykonywać wywołania między źródłami na koncie usługi Azure Cosmos DB. Na przykład ,
https://www.mydomain.com
,https://mydomain.com
https://api.mydomain.com
. Możesz również użyć symbolu wieloznakowego "*", aby zezwolić na wszystkie źródła i wybrać pozycję Prześlij.Uwaga
Obecnie nie można używać symboli wieloznacznych w ramach nazwy domeny. Na przykład
https://*.mydomain.net
format nie jest jeszcze obsługiwany.
Włączanie obsługi mechanizmu CORS na podstawie szablonu Resource Manager
Aby włączyć mechanizm CORS przy użyciu szablonu Resource Manager, dodaj do istniejącego szablonu sekcję "cors" z właściwością "allowedOrigins". Ten kod JSON jest przykładem szablonu, który tworzy nowe konto usługi Azure Cosmos DB z włączonym mechanizmem 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"
}
]
}
}
Korzystanie z biblioteki Języka JavaScript usługi Azure Cosmos DB z przeglądarki
Obecnie biblioteka Języka JavaScript usługi Azure Cosmos DB ma tylko wersję CommonJS biblioteki dostarczanej z jej pakietem. Aby użyć tej biblioteki z poziomu przeglądarki, należy użyć narzędzia takiego jak pakiet zbiorczy lub pakiet internetowy, aby utworzyć bibliotekę zgodną z przeglądarką. Niektóre biblioteki Node.js powinny mieć dla nich makiety przeglądarki. Jest to przykład pliku konfiguracji pakietu webpack, który ma niezbędne pozorne ustawienia.
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")
}
};
Oto przykładowy kod , który używa języka TypeScript i pakietu Webpack z biblioteką zestawu SDK języka JavaScript usługi Azure Cosmos DB. Przykład tworzy aplikację z listą zadań do wykonania, która wysyła aktualizacje w czasie rzeczywistym podczas tworzenia nowych elementów.
Najlepszym rozwiązaniem jest użycie klucza podstawowego do komunikowania się z usługą Azure Cosmos DB z przeglądarki. Zamiast tego użyj tokenów zasobów do komunikowania się. Aby uzyskać więcej informacji na temat tokenów zasobów, zobacz Artykuł Securing access to Azure Cosmos DB (Zabezpieczanie dostępu do usługi Azure Cosmos DB ).
Następne kroki
Aby dowiedzieć się więcej o innych sposobach zabezpieczania konta usługi Azure Cosmos DB, zobacz następujące artykuły: