Aracılığıyla paylaş


Çıkış Noktaları Arası Kaynak Paylaşımını (CORS) Yapılandırma

UYGULANANLAR: NoSQL

Çıkış Noktaları Arası Kaynak Paylaşımı (CORS), bir etki alanı altında çalışan bir web uygulamasının başka bir etki alanındaki kaynaklara erişmesini sağlayan bir HTTP özelliğidir. Web tarayıcıları, web sayfasının farklı bir etki alanındaki API'leri çağırmasını engelleyen, aynı kaynak ilkesi olarak bilinen bir güvenlik kısıtlaması uygular. Ancak CORS, kaynak etki alanının başka bir etki alanındaki API'leri çağırmasına izin vermek için güvenli bir yol sağlar. Azure Cosmos DB'deki NoSQL API'si artık "allowedOrigins" üst bilgisini kullanarak Çıkış Noktaları Arası Kaynak Paylaşımı'nı (CORS) destekliyor. Azure Cosmos DB hesabınız için CORS desteğini etkinleştirdikten sonra, belirttiğiniz kurallara göre izin verilip verilmediğini belirlemek için yalnızca kimliği doğrulanmış istekler değerlendirilir.

Çıkış noktaları arası kaynak paylaşımı (CORS) ayarını Azure portalından veya bir Azure Resource Manager şablonundan yapılandırabilirsiniz. NoSQL API'sini kullanan Azure Cosmos DB hesapları için Azure Cosmos DB, hem Node.js hem de tarayıcı tabanlı ortamlarda çalışan bir JavaScript kitaplığını destekler. Bu kitaplık artık Ağ Geçidi modunu kullanırken CORS desteğinden yararlanabilir. Bu özelliği kullanmak için istemci tarafı yapılandırması gerekmez. CORS desteğiyle tarayıcıdaki kaynaklar, basit işlemler için JavaScript kitaplığı aracılığıyla veya doğrudan REST API'den Azure Cosmos DB'ye doğrudan erişebilir.

Not

CORS desteği yalnızca NoSQL için Azure Cosmos DB için geçerlidir ve desteklenir. Bu protokoller istemci-sunucu iletişimi için HTTP kullanmadığından Cassandra, Gremlin veya MongoDB için Azure Cosmos DB API'leri için geçerli değildir.

Azure portalından CORS desteğini etkinleştirme

Azure portalını kullanarak Çıkış Noktaları Arası Kaynak Paylaşımı'nı etkinleştirmek için şu adımları izleyin:

  1. Azure Cosmos DB hesabınıza gidin. CORS sayfasını açın.

  2. Azure Cosmos DB hesabınıza çıkış noktaları arası çağrı yapabilen çıkış noktalarının virgülle ayrılmış bir listesini belirtin. Örneğin, https://www.mydomain.com, https://mydomain.com, https://api.mydomain.com. Ayrıca tüm çıkış noktalarına izin vermek için "*" joker karakteri kullanabilir ve Gönder'i seçebilirsiniz.

    Not

    Şu anda, etki alanı adının bir parçası olarak joker karakterler kullanamazsınız. Örneğin https://*.mydomain.net , biçim henüz desteklenmiyor.

    Azure portalını kullanarak çıkış noktaları arası kaynak paylaşımını etkinleştirme

Resource Manager şablonundan CORS desteğini etkinleştirme

Bir Resource Manager şablonu kullanarak CORS'yi etkinleştirmek için mevcut herhangi bir şablona "allowedOrigins" özelliğine sahip "cors" bölümünü ekleyin. Bu JSON, CORS etkinleştirilmiş yeni bir Azure Cosmos DB hesabı oluşturan bir şablon örneğidir.

{
  "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"
      }
    ]
  }
}

Tarayıcıdan Azure Cosmos DB JavaScript kitaplığını kullanma

Bugün, Azure Cosmos DB JavaScript kitaplığında kitaplığın yalnızca CommonJS sürümü paketiyle birlikte gönderilir. Bu kitaplığı tarayıcıdan kullanmak için, tarayıcıyla uyumlu bir kitaplık oluşturmak için Toplama veya Webpack gibi bir araç kullanmanız gerekir. Bazı Node.js kitaplıklarında tarayıcı sahteleri olmalıdır. Bu, gerekli sahte ayarlara sahip bir webpack yapılandırma dosyası örneğidir.

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

Aşağıda Azure Cosmos DB JavaScript SDK kitaplığıyla TypeScript ve Webpack kullanan bir kod örneği verilmiştir. Örnek, yeni öğeler oluşturulduğunda gerçek zamanlı güncelleştirmeler gönderen bir Todo uygulaması oluşturur.

En iyi uygulama olarak, tarayıcıdan Azure Cosmos DB ile iletişim kurmak için birincil anahtarı kullanmayın. Bunun yerine, iletişim kurmak için kaynak belirteçlerini kullanın. Kaynak belirteçleri hakkında daha fazla bilgi için Bkz . Azure Cosmos DB'ye erişimin güvenliğini sağlama makalesi.

Sonraki adımlar

Azure Cosmos DB hesabınızın güvenliğini sağlamanın diğer yolları hakkında bilgi edinmek için aşağıdaki makalelere bakın: