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:

  1. Przejdź do konta usługi Azure Cosmos DB. Otwórz stronę CORS .

  2. 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.comhttps://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 współużytkowania zasobów między źródłami przy użyciu Azure Portal

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: