Mengonfigurasi Berbagi Sumber Daya Lintas Asal (CORS)

BERLAKU UNTUK: NoSQL

Berbagi Sumber Daya Lintas Asal (CORS) adalah fitur HTTP yang mengaktifkan aplikasi web yang berjalan dalam satu domain untuk mengakses sumber daya di domain lain. Browser web menerapkan pembatasan keamanan yang dikenal sebagai kebijakan asal yang sama, yang mencegah halaman web memanggil API di domain yang berbeda. Namun, CORS menyediakan cara yang aman untuk memungkinkan domain asal memanggil API di domain lain. API untuk NoSQL di Azure Cosmos DB sekarang mendukung Berbagi Sumber Daya Lintas Asal (CORS) dengan menggunakan header "allowedOrigins". Setelah Anda mengaktifkan dukungan CORS untuk akun Azure Cosmos DB Anda, hanya permintaan terautentikasi yang dievaluasi untuk menentukan apakah permintaan tersebut diizinkan sesuai dengan aturan yang telah Anda tentukan.

Anda dapat mengonfigurasi pengaturan Berbagi sumber daya lintas asal (CORS) dari portal Microsoft Azure atau dari templat Azure Resource Manager. Untuk akun Azure Cosmos DB menggunakan API untuk NoSQL, Azure Cosmos DB mendukung pustaka JavaScript yang berfungsi di lingkungan Node.js dan berbasis browser. Pustaka ini sekarang dapat memanfaatkan dukungan CORS saat menggunakan mode Gateway. Tidak ada konfigurasi dari sisi klien yang diperlukan untuk menggunakan fitur ini. Dengan dukungan CORS, sumber daya dari browser dapat langsung mengakses Azure Cosmos DB melalui pustaka JavaScript atau langsung dari REST API untuk operasi sederhana.

Catatan

Dukungan CORS hanya berlaku dan didukung untuk Azure Cosmos DB untuk NoSQL. Ini tidak berlaku untuk API Azure Cosmos DB untuk Cassandra, Gremlin, atau MongoDB, karena protokol ini tidak menggunakan HTTP untuk komunikasi klien-server.

Aktifkan dukungan CORS dari portal Microsoft Azure

Gunakan langkah-langkah berikut ini untuk mengaktifkan Berbagi Sumber Daya Lintas Asal menggunakan portal Microsoft Azure:

  1. Navigasikan ke akun Azure Cosmos DB Anda. Buka halaman CORS.

  2. Tentukan daftar asal yang dipisahkan koma, yang dapat melakukan panggilan lintas asal ke akun Azure Cosmos DB Anda. Misalnya: https://www.mydomain.com, https://mydomain.com, https://api.mydomain.com. Anda juga dapat menggunakan kartubebas “*” untuk memungkinkan semua asal dan pilih Kirim.

    Catatan

    Saat ini, Anda tidak dapat menggunakan kartu bebas sebagai bagian dari nama domain. Misalnya, format https://*.mydomain.net belum didukung.

    Aktifkan berbagi sumber lintas asal menggunakan portal Microsoft Azure

Aktifkan dukungan CORS dari templat Resource Manager

Untuk mengaktifkan CORS dengan menggunakan templat Resource Manager, tambahkan bagian "cors" dengan properti "allowedOrigins" ke templat yang sudah ada. JSON ini adalah contoh templat yang membuat akun Azure Cosmos DB baru dengan CORS diaktifkan.

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

Menggunakan pustaka JavaScript Azure Cosmos DB dari browser

Saat ini, pustaka JavaScript Azure Cosmos DB hanya memiliki versi CommonJS dari pustaka kode yang dikirim dengan paketnya. Untuk menggunakan pustaka ini dari browser, Anda harus menggunakan alat seperti Rollup atau Webpack untuk membuat pustaka yang kompatibel dengan browser. Pustaka Node.js tertentu harus memiliki mock browser untuknya. Ini adalah contoh file konfigurasi webpack yang memiliki pengaturan mock yang diperlukan.

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

Ini adalah sampel kode yang menggunakan TypeScript dan Webpack dengan pustaka SDK JavaScript Azure Cosmos DB. Sampel tersebut membangun aplikasi Todo yang mengirimkan pembaruan real time saat item baru dibuat.

Sebagai praktik terbaik, jangan gunakan kunci primer untuk berkomunikasi dengan Azure Cosmos DB dari browser. Sebagai gantinya, gunakan token sumber daya untuk berkomunikasi. Untuk informasi selengkapnya tentang token sumber daya, lihat artikel Mengamankan akses ke Azure Cosmos DB.

Langkah berikutnya

Untuk mempelajari tentang cara lain untuk mengamankan akun Azure Cosmos DB Anda, lihat artikel berikut ini: