سؤال

سيتم تشغيل أحد طلبنا في IFRAME، داخل Salesforce وأنا أواجه مشكلات مع الوصول إلى المشغل. إنهم يرغبون في القيام ببعض عمليات التحقق من بعض الشيكات، للتأكد من أن الطلب يأتي من Salesforce وتم منح عناوين IP للتحقق من.

مشكلتي هي أنه في أي وقت أحاول الوصول إلى المشغل من خلال أي من الطريقتين التاليين:

HttpContext.Current.Request.ServerVariables["HTTP_REFERER"]
HttpContext.Current.Request.UrlReferrer

يعيدني فارغة.

أي أفكار كيف يمكنني الحصول على الاحالة؟

ملاحظة: أنا أدرك أنه يمكنك محاكاة المحاكاة، لكنه جزء من المتطلبات.

هل كانت مفيدة؟

المحلول

إذا فهمت السؤال بشكل صحيح، فلديك مواقع عميل تشير إلى موقعك من خلال تضمين IFRAMES في صفحات الويب الخاصة بهم النقطة إلى موقعك. ترغب في "ضمان" أن الطلبات تأتي من صفحة مضيفة هي نفسها جزءا من مجموعة مواقع محددة. يتم وصف مجموعة المواقع المعينة بواسطة مجموعة من عناوين IP. هل هذا يغطي ذلك؟

مخادع. أولا، يتيح لك افتراض أنك حصلت على إحالة. ستحتاج إلى تحقيق اسم المضيف منه (سهل يكفي باستخدام Uri اكتب). ثم تحتاج إلى حل عنوان IP لاسم المضيف باستخدام DNS (مرة أخرى غير صعبة للغاية مع .NET Framework).

بالطبع تحتاج إلى الحصول على إحالة وهذا هو الشيء الأكثر صعوبة. لا تضع المتصفحات دائما رأس المشغل في الطلب. هذا صحيح بشكل خاص عندما لا يكون عنوان الحكم في نفس المجال كإحالة، وهذا هو الحال هنا. iow، هذا Showstopper..

نهج أفضل لحل هذه المشكلة (وليس عرضة للخداع) هو استخدام بعض المصادقة المستندة إلى التجزئة. لا يجب أن تكون متطورة للغاية (إذا شعرت المتطلبات الأصلية باختبار المشغل كافية على أي حال).

نصائح أخرى

إحالة موجودة فقط إذا تم طلب الصفحة من خلال رابط. عند فتح صفحة، تم فتحها من شريط العناوين في متصفح عن طريق الكتابة في العنوان مباشرة (أو في حالتك Y تحدد SRC. من iFrame)، سيكون الإحالة فارغا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top