Çı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ı, bir web sayfasının farklı bir etki alanındaki API'leri çağırmasını engelleyen, aynı kaynaklı ilke 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 veya 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'den CORS desteğini etkinleştirme

Azure portal 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ılar 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 kullanarak çıkış noktaları arası kaynak paylaşımını etkinleştirme

Resource Manager şablonundan CORS desteğini etkinleştirme

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

Günümüzde Azure Cosmos DB JavaScript kitaplığında kitaplığın yalnızca CommonJS sürümü paketiyle birlikte gönderilmiştir. Tarayıcıdan bu kitaplığı kullanmak için, uyumlu bir tarayıcı kitaplığı 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 web paketi 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 Azure Cosmos DB'ye erişimi güvenli hale getirme makalesine bakın.

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: