المتطلبات:
يحتوي المجال A على صفحة a.html، والتي تحتوي على إطار iframe يحتوي على صفحة b.html للمجال B. نحتاج الآن إلى تمرير قيمة مربع نص في الصفحة a.html إلى b.html من خلال زر على a.html مربع النص الخاص بالصفحة .
ملحوظة: b.html هنا عبارة عن صفحة ويب بتنسيق html ولا يمكنها استقبال القيم المنشورة من مواقع ويب أخرى، لذلك لا يمكنك استخدام طريقة النشر المباشر لتمرير القيم، ومع ذلك، إذا كانت الصفحة المستلمة هي b.aspx أو b.asp، فلا يمكنك استخدام طريقة النشر المباشر لا يمكن النشر مباشرة بالفعل؟ الجواب نعم، هذا ممكن بالفعل، ولكن يجب تحديث b.asp أو b.aspx كيف يمكننا تغيير عناصر أو قيم الصفحة المتلقية ديناميكيًا دون التحديث؟ (يمكن لمشاريع IE المحلية تحقيق الوصول عبر المجال، ولكن يتم رفض الوصول عبر المجال من الشبكة الخارجية بشكل افتراضي. يتم رفض مشاريع FireFox المحلية والوصول عبر المجال من الشبكة الخارجية.)
المبدأ:
يحظر المتصفح الوصول عبر المجال الوصول إلى البيانات، لكن المتصفح لا يمنع نقل القيمة اللاحقة عبر النطاقات والإطارات. يمكننا النشر في المجال A في إطار الصفحة في المجال B، ثم استخدام صفحة الإطار في المجال B لتحقيق الوصول إلى البيانات في هذا المجال. هذه في الواقع خدعة صغيرة في تطبيقات HTML، وهي تحقق إرسال البيانات عبر النطاقات دون استخدام أي معرفة متقدمة أخرى.
الطريقة:
قم بإضافة صفحتين في المجال B لتحقيق الوصول إلى البيانات عبر المجال، post.aspx وmain.aspx.
علاقة الصفحة كما يلي. يحتوي a.html في المجال A على إطار. عنوان صفحة الإطار هو main.aspx في المجال B. main.aspx عبارة عن مجموعة إطارات تحتوي على إطارين، (frmMain)b.html و(frmPost)post. .aspx
.a.html للمجال A:
http://www.b**.com/main.aspx"> >
رئيسي للمجال B .aspx:
نقوم أولاً بحفظ البيانات التي سيتم تمريرها إلى المجال B في شكل a.html، ثم ننشرها إلى post.aspx في المجال B.
في هذا الوقت، يتلقى post.aspx القيمة، ثم ينفذ الإطار الأصلي في هذا المجال للوصول إلى b.html.
string cmd = Request.Form["cmd"];
if (null != cmd && string.Empty != cmd)
{
Response.Write(" ");
}
ليس من الصعب العثور على هذا الانتقال عبر يتم استخدام الإطارات هنا (أي يتم القفز بطبقة من الإطار في المنتصف) لتحقيق الوصول إلى البيانات عبر المجال. وهذا هو، نشر إلى الإطار الفرعي للإطار.
بوستسكريبت:
هذا المثال هو مجرد حل للوصول عبر النطاقات في ظل بعض الظروف الخاصة، والتي قد تكون مفيدة لك. ونظرًا لأن الطريقة بسيطة، فإن تطبيقها له العديد من القيود. (ومع ذلك، أعتقد أن هذا مشابه جدًا لأياكس. لم يتم تحديث الصفحة واكتملت أيضًا معالجة البيانات من جانب الخادم ^o^).
مواد نص الويب ذات الصلة:
حل الوصول عبر النطاق لتطبيقات الويب
يعرف الأصدقاء الذين قاموا بتطوير Ajax عبر مواقع ويب متعددة أنه إذا كنا في موقع الويب A، فإننا نريد استخدام Ajax للحصول على محتوى محدد في موقع الويب B، إذا كان موقع الويب A وموقع الويب B. ليس في نفس المجال، لذلك تنشأ مشاكل الوصول عبر المجال. تعد مشكلة الوصول عبر المجال في Ajax مشكلة شائعة يواجهها مطورو Ajax الحاليون.
يتعامل IE مع الوصول عبر المجال من خلال ظهور مربع تحذير لتذكير المستخدم. إذا قام المستخدم بتضمين موقع الويب كموقع ويب موثوق به أو قام بتخفيض مستوى الأمان، فلن يذكرك IE بهذه المشكلة.
عندما يواجه FireFox والمتصفحات الأخرى غير التابعة لشركة Microsoft إمكانية الوصول عبر المجال، فإن الحل هو رفض الوصول.
يقول بعض الأشخاص أن IE هو متصفح رئيسي، طالما أنه يمكن استخدامه بشكل طبيعي. هذه عبارة سيئة على الرغم من قدرة IE على التعامل معها، إلا أن هناك متطلبات أساسية: إما أن يتحمل المستخدم عناء النقر فوق "نعم" بعد ظهور مربع التحذير على الصفحة (لن يؤدي النقر فوق "لا" إلى تنفيذ استدعاء Ajax)، أو يقوم المستخدم بتضمين الأمر. الموقع كموقع موثوق به. يعد هذان الأسلوبان شائعين نسبيًا في تطبيقات نظام إدارة المؤسسات، لأنه يمكن لمسؤولي النظام استخدام الوسائل الإدارية لضمان سلوك المستخدم. ولكن بالنسبة لتطوير موقع ويب أو بوابة على الإنترنت، فإن هذا النهج لا يعمل.
لقد واجهت هذه المشكلة مؤخرًا وكنت بحاجة إلى ظهور بعض المؤثرات الخاصة على النافذة الرئيسية بعد الوصول عبر النطاقات، وقد بحثت عن بعض المعلومات ووجدت العديد من الحلول الممكنة من خلال المحاولات المستمرة واختبار التوافق في متصفحات مختلفة:
1. طريقة وكيل الويب. . أي أن طلبات الوصول عبر المجال إلى موقع الويب "ب" التي يتم إنشاؤها عندما يزور المستخدم موقع الويب "أ" يتم إرسالها إلى الصفحة المخصصة لموقع الويب "أ"، وتكمل الصفحة التفاعل بدلاً من صفحة المستخدم، وبالتالي إرجاع النتائج المناسبة. يمكن أن يحل هذا الحل معظم مشكلات الوصول عبر المجال التي يمكن التفكير فيها في هذه المرحلة، ولكنه يتطلب من موقع الويب (أ) توفير دعم وكيل الويب، لذلك، يجب أن يتعاون موقع الويب (أ) وموقع الويب (ب) بشكل وثيق، ويجب أن يكون الخادم في كل عملية تفاعل موقع الويب A يزداد العبء ولا يمكن حفظ حالة الجلسة نيابة عن المستخدم.
2. طريقة الطلب. تستخدم بوابة MYMSN هذه الطريقة، لكن MYMSN لا تتضمن مشكلات في الوصول عبر النطاقات. التحكم ديناميكيًا في إنشاء علامات البرنامج النصي وإكمال استدعاء الصفحات عبر المجالات عن طريق تعديل سمة src لعلامة البرنامج النصي. العيب في هذا الحل هو أن سمة src للبرنامج النصي تستخدم طريقة get لإكمال المكالمة. إذا كانت السلسلة التي تم تمريرها أثناء الطلب كبيرة جدًا، فقد لا تعمل بشكل صحيح. ومع ذلك، فإن هذا الحل مناسب جدًا لبوابات التجميع.
3. طريقة iframe. لقد قمت بمراجعة منشور حول الوصول عبر النطاقات عن طريق الاستيقاظ على javaeye وذكر أنه قام بحل مشكلة الوصول عبر النطاقات باستخدام iframe. من الممكن بالفعل استخدام iframe لإرسال البيانات والحصول عليها، ولكن بما أن النافذة الأصلية والنافذة الفرعية لا يمكن أن تتفاعلا (في حالة الوصول عبر المجال، يتم رفض هذا التفاعل)، لا يمكن إكمال التأثير على النافذة الأصلية.
(لقد وجدت هذه المقالة، يرجى إضافة العنوان: http://www.javaeye.com/topic/15641 )
4. طريقة التفريغ المحلي للمستخدم: يعتمد IE نفسه على خصائص نظام Windows الأساسي لتزويدنا بنظام قائم على iframe الحل لاستخدام الذاكرة "للتجاوز" هو أنه يمكن نقل البيانات بين نافذتين من خلال حافظة Windows على العميل. ما عليك سوى ضبط الفاصل الزمني على جانب تلقي البيانات للاقتراع، ومسح الفاصل الزمني بعد الحصول على نتيجة. . يحدد استقلال النظام الأساسي لـ FF أنه لا يدعم طريقة الحافظة، وتم إصلاح ثغرة المكونات الإضافية في الإصدارات السابقة من FF، لذلك لا يمكن لـ FF إكمال العبور السري عبر الذاكرة. نظرًا لأن FF لا يوفر دعمًا لعمليات الملفات (لا يمكن إكمال نقل البيانات عبر المجالات من خلال ملفات تعريف الارتباط)، فلا يمكن استخدام هذه الطريقة التقنية إلا في IE.
5. طريقتي الخاصة لحل هذا النوع من المشاكل: من خلال الجمع بين الطرق السابقة، عند زيارة موقع الويب أ، اطلب أولاً من موقع الويب ب إكمال معالجة البيانات، ثم احصل على النتائج المطلوبة بناءً على التعريف المرتجع. كما أن عيوب هذه الطريقة واضحة أيضًا. وتتمثل الميزة في الحفاظ على الجلسة أيضًا، وتعزيز القدرة على التفاعل بين صفحات موقع الويب (أ) وموقع الويب (ب). والأهم من ذلك أن هذا الحل يلبي جميع احتياجاتي.
خلاصة القول، من بين الخيارات المذكورة أعلاه، أوصي بشدة بالطريقة عند الطلب. يمكن لهذه الطريقة أن تحل معظم مشكلاتك دون إرسال كمية كبيرة من البيانات.
عنوان حل الوصول عبر النطاق لتطبيقات الويب: http://www.newbooks.com.cn/info/37166.html
http://www.cnblogs.com/lgamoy/archive/2006/11/23/569633.html