تكوين مشاركة الموارد عبر الأصول (CORS)

ينطبق على: NoSQL

تعد ميزة مشاركة الموارد عبر الأصول (CORS) إحدى ميزات بروتوكول نقل نص تشعبي التي تمكّن تطبيق ويب يعمل ضمن مجال واحد من الوصول إلى الموارد في مجال آخر. تنفذ متصفحات الويب قيوداً أمنية تُعرف باسم نهج نفس الأصل الذي يمنع صفحة ويب من استدعاء واجهات برمجة التطبيقات في مجال مختلف. ومع ذلك، توفر مشاركة الموارد عبر الأصول طريقة آمنة للسماح للمجال الأصلي باستدعاء واجهات برمجة التطبيقات في مجال آخر. تدعم واجهة برمجة التطبيقات ل NoSQL في Azure Cosmos DB الآن مشاركة الموارد عبر المنشأ (CORS) باستخدام عنوان "allowedOrigins". بعد تمكين دعم CORS لحساب Azure Cosmos DB الخاص بك، يتم تقييم الطلبات المصادق عليها فقط لتحديد ما إذا كان مسموحا بها وفقا للقواعد التي حددتها.

يمكنك تكوين إعداد مشاركة الموارد عبر الأصول (CORS) من مدخل Azure أو من قالب مدير موارد Azure. بالنسبة لحسابات Azure Cosmos DB التي تستخدم واجهة برمجة التطبيقات ل NoSQL، يدعم Azure Cosmos DB مكتبة JavaScript التي تعمل في كل من البيئات Node.js والمستندة إلى المستعرض. يمكن لهذه المكتبة الآن الاستفادة من دعم مشاركة الموارد عبر الأصول عند استخدام وضع البوابة. لا يوجد تكوين من جانب العميل مطلوب لاستخدام هذه الميزة. مع دعم CORS، يمكن للموارد من المتصفح الوصول مباشرة إلى Azure Cosmos DB من خلال مكتبة JavaScript أو مباشرة من واجهة برمجة تطبيقات REST للعمليات البسيطة.

إشعار

لا ينطبق دعم CORS إلا ويدعم ل Azure Cosmos DB ل NoSQL. لا ينطبق على واجهات برمجة تطبيقات Azure Cosmos DB لـ Cassandra أو Gremlin أو MongoDB، لأن هذه البروتوكولات لا تستخدم HTTP للاتصال بخادم العميل.

تمكين دعم مشاركة الموارد عبر الأصول من بوابة Azure

اتبع هذه الخطوات التالية لتمكين مشاركة الموارد عبر الأصول باستخدام مدخل Microsoft Azure:

  1. انتقل إلى حسابك على Azure Cosmos DB. افتح صفحة مشاركة الموارد عبر الأصول.

  2. حدد قائمة أصول مفصولة بفواصل يمكنها إجراء مكالمات عبر الأصل لحساب Azure Cosmos DB الخاص بك. على سبيل المثال، https://www.mydomain.com، https://mydomain.com، https://api.mydomain.com. يمكنك أيضاً استخدام حرف بدل "*" للسماح بجميع الأصول وتحديد"Submit".

    إشعار

    حالياً، لا يمكنك استخدام أحرف البدل كجزء من اسم المجال. على سبيل المثال https://*.mydomain.net ، التنسيق غير معتمد بعد.

    تمكين مشاركة الموارد عبر المنشأ باستخدام مدخل Microsoft Azure

تفعيل دعم مشاركة الموارد عبر الأصول من قالب مدير الموارد

لتمكين مشاركة الموارد عبر الأصول باستخدام نموذج مدير الموارد، أضف قسم "cors" بخاصية "allowOrigins" إلى أي قالب موجود. JSON هذا هو مثال على قالب يقوم بإنشاء حساب Azure Cosmos DB جديد مع تمكين 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"
      }
    ]
  }
}

استخدام مكتبة Azure Cosmos DB JavaScript من مستعرض

اليوم، تحتوي مكتبة Azure Cosmos DB JavaScript فقط على إصدار CommonJS من المكتبة التي يتم شحنها مع الحزمة الخاصة بها. لاستخدام هذه المكتبة من المستعرض، يجب عليك استخدام أداة مثل Rollup أو Webpack لإنشاء مكتبة متوافقة مع المستعرض. يجب أن تحتوي مكتبات Node.js معينة على نماذج متصفح لها. هذا مثال على ملف تكوين حزمة الويب الذي يحتوي على إعدادات وهمية ضرورية.

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

إليك عينة التعليمات البرمجية التي تستخدم TypeScript وWebpack مع مكتبة Azure Cosmos DB JavaScript SDK. تنشئ العينة تطبيق Todo يرسل تحديثات في الوقت الفعلي عند إنشاء عناصر جديدة.

كأفضل ممارسة، لا تستخدم المفتاح الأساسي للاتصال بخدمة Azure Cosmos DB من المستعرض. بدلاً من ذلك، استخدم رموز الموارد للتواصل. لمزيد من المعلومات حول الرموز المميزة للموارد، راجع مقالة تأمين الوصول إلى Azure Cosmos DB .

الخطوات التالية

للتعرف على طرق أخرى لتأمين حساب Azure Cosmos DB، راجع المقالات التالية: