Çı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:
Azure Cosmos DB hesabınıza gidin. CORS sayfasını açın.
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.
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: