Konfigurowanie współużytkowania zasobów między źródłami (CORS)
DOTYCZY: NoSQL
Udostępnianie zasobów między pochodzenia (DNS) to funkcja protokołu HTTP, która umożliwia aplikacji sieci Web działającej w jednej domenie dostęp do zasobów w innej domenie. Przeglądarki internetowe implementują ograniczenie zabezpieczeń znane jako zasady pochodzenia tego samego, 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ą one dozwolone zgodnie z określonymi regułami.
Ustawienie współużytkowania zasobów między źródłami (CORS) można skonfigurować z poziomu witryny Azure Portal lub szablonu usługi Azure Resource Manager. W przypadku kont usługi Azure Cosmos DB korzystających z interfejsu API dla 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. Nie jest wymagana żadna konfiguracja po stronie klienta do korzystania z tej funkcji. 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 i jest obsługiwana tylko w przypadku usługi Azure Cosmos DB for NoSQL. Nie ma zastosowania do interfejsów API usługi Azure Cosmos DB dla baz danych Cassandra, Gremlin lub MongoDB, ponieważ te protokoły nie używają protokołu HTTP do komunikacji klient-serwer.
Włączanie obsługi mechanizmu CORS w witrynie Azure Portal
Wykonaj następujące kroki, aby włączyć udostępnianie zasobów między źródłami przy użyciu witryny 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 usługi Resource Manager
Aby włączyć mechanizm CORS przy użyciu szablonu usługi Resource Manager, dodaj sekcję "cors" z właściwością "allowedOrigins" do dowolnego istniejącego szablonu. 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 jego pakietem. Aby użyć tej biblioteki w przeglądarce, musisz użyć narzędzia, takiego jak pakiet zbiorczy lub pakiet webpack, 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ę do wykonania, która wysyła aktualizacje w czasie rzeczywistym po utworzeniu nowych elementów.
Następne kroki
Aby dowiedzieć się więcej o innych sposobach zabezpieczania konta usługi Azure Cosmos DB, zobacz następujące artykuły: