Angular.js: مشكلة موقع $ لعناوين url التي تم فك تشفيرها وغير المشفرة

تم إنشاؤها على ١١ يوليو ٢٠١٧  ·  4تعليقات  ·  مصدر: angular/angular.js

أنا أرسل ...

  • [x] تقرير الشوائب
  • [ ] طلب المواصفات
  • [] أخرى (الرجاء عدم إرسال طلبات الدعم هنا (انظر أعلاه))

السلوك الحالي:

اهلا ياجماعة.
بعد مناقشة في العلاقات العامة التي قمت بإنشائها لإصلاح خطأ في خدمة الموقع $ لعنوان url الذي يحتوي على المحتملة في عنوان url ليست هي المشكلة الرئيسية بدلاً من ذلك ، تكمن المشكلة في استخدام عناوين url غير المشفرة وغير المشفرة.

انظر العلاقات العامة لمزيد من التفاصيل. https://github.com/angular/angular.js/pull/16098

السلوك المتوقع / الجديد:
يجب أن يعمل عنوان url غير المشفر والمفكك باستخدام خدمة الموقع $

الإصدار الزاوي: 1.x.

المتصفح: الكل

أي شيء آخر:

كيف تصلحها

في src / ng / browser.js توجد وظيفة fireStateOrUrlChange لها هذا التحقق من الصحة

إذا (lastBrowserUrl === self.url () && prevLastHistoryState === cachedState) {{
إرجاع؛
}
يبدو أن المشكلة الرئيسية هي أننا نقارن self.url () مع lastBrowserUrl ، ولكن يمكن تعيين lastBrowserUrl من مصادر مختلفة ، وليس دائمًا بنفس التشفير / فك التشفير

$location low broken expected use bug

التعليق الأكثر فائدة

لقد أصلحنا هذا جزئيًا باستخدام المتصفح <a href> لتطبيع عناوين URL في بعض المجالات الرئيسية (https://github.com/angular/angular.js/commit/e68697e2e30695f509e6c2c1e43c2c02b7af41f0 ، https://github.com/ الزاوي / angular.js / الالتزام / 2f72a69ded53a122afad3ec28d91f9bd2f41eb4f). ومع ذلك ، لا يوجد متصفح يعمل على تطبيع كل شيء بهذه الطريقة. لإصلاح هذا حقًا ، سنحتاج إلى تنفيذ التطبيع بأنفسنا.

لقد قمت بتطبيق POC للقيام بذلك التطبيع يدويًا ، لكننا قررنا أن هذا تغيير كبير جدًا في هذه المرحلة. لمعلوماتك 15 من الإضافات التي تم اختبارها في ذلك الالتزام تفشل حاليًا في الكروم.

لهذه الأسباب سنضع هذا في حالة "لن يتم الإصلاح".

ال 4 كومينتر

gkalpak تقصد (من تعليقك ) القيام بشيء مثل url = urlResolve(url).href ضمن $browser.url أو تغيير جميع المكالمات إلى $browser.url(val) لتكون متسقة؟ يبدو أن إضافة urlResolve تعمل ، على الرغم من إجراء تغييرات قليلة (بعض عناوين URL تنتهي الآن بـ / ).

jbedard ، لم أفكر في تفاصيل التنفيذ. كنت أشير إلى النتيجة النهائية: ابتسامة:

dmartres هل يمكنك تأكيد ما إذا كان هذا لا يزال يمثل مشكلة في 1.7.3؟ أعتقد أن aee7d53a6b5d3d7bc0a1124fd3df9b263777e72e (إصلاح # 16592) ربما يكون قد أصلح هذا؟

لقد أصلحنا هذا جزئيًا باستخدام المتصفح <a href> لتطبيع عناوين URL في بعض المجالات الرئيسية (https://github.com/angular/angular.js/commit/e68697e2e30695f509e6c2c1e43c2c02b7af41f0 ، https://github.com/ الزاوي / angular.js / الالتزام / 2f72a69ded53a122afad3ec28d91f9bd2f41eb4f). ومع ذلك ، لا يوجد متصفح يعمل على تطبيع كل شيء بهذه الطريقة. لإصلاح هذا حقًا ، سنحتاج إلى تنفيذ التطبيع بأنفسنا.

لقد قمت بتطبيق POC للقيام بذلك التطبيع يدويًا ، لكننا قررنا أن هذا تغيير كبير جدًا في هذه المرحلة. لمعلوماتك 15 من الإضافات التي تم اختبارها في ذلك الالتزام تفشل حاليًا في الكروم.

لهذه الأسباب سنضع هذا في حالة "لن يتم الإصلاح".

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات