قم بتضمين عنوان URL الديناميكي في عنوان URL الخاص بي دون استخدام سلسلة الاستعلام؟

StackOverflow https://stackoverflow.com/questions/2090077

سؤال

ASP.NET 3.5 ، IIS7

في global.asax الخاص بـ application_beginrequest ، أحتاج إلى استخراج عنوان URL للطلب بعنوان URL منفصل تمامًا تم تضمينه فيه دون استخدام سلسلة الاستعلام.

كان الحل الذي توصلت إليه هو hex-encode عنوان URL الهدف بأكمله كما لو كان دليلًا ، على النحو التالي:

http://localhost/687474703A...etc...732E6D7033/irrelevantFilename.txt

هذا فشل في IIS7 ، الذي لن يتسامح تطبيق ASP.NET لمسار URL أكبر من 260 حرفًا.

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

إلى أي مدى يمكنني تضمين عنوان URL المستهدف في عنوان URL الخاص بي؟

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

المحلول

يمكنك url-encode ، أو بدلاً من ذلك ، قم بتشفيره. كلاهما عمومًا أكثر إحكاما من ترميز السداسي.

ملاحظة: إذا كان عنوان URL أطول من حوالي 200 حرف ، فإن هذا الحد من الحرف 260 سيكون مشكلة بغض النظر عن السبب. وإذا كان عنوان URL أطول من 260 حرفًا ... حسنًا ، يمكنك القيام بالرياضيات :-)

لا أفهم تمامًا سبب حاجتك إلى ملف منفصل بعد ذلك. يمكنك استخدام معالج 404 ، أو مجرد تحليل للأمام لكل طلب.

راجع للشغل: إذا كان لديك الخيار ، فمن الأفضل أن تدمج عنوان URL باستخدام ملف تعريف الارتباط ، أو كوسيطة منشورة. إذا لم يكن هذا خيارًا ، فيمكنك أيضًا التفكير في استخدام خدمة URL لتراجع عناوين URL http://bit.ly/ الخ. هذه عناوين URL قصيرة حقا. كل هذا يتوقف على أين تأتي عناوين URL في المقام الأول. إذا كان لديك سيطرة على توليد عناوين URL هذه ، فلماذا لا تمنحهم كل هوية قصيرة فقط ، وتخزينها على طاولة ، وابحث عنها عند "تحليل" عنوان URL؟

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