กำลังโพสต์ปัญหาที่คล้ายกันกับวิธีแก้ปัญหาที่ฉันต้องเผชิญ
หวังว่าจะช่วยให้ผู้ที่มีข้อกำหนดคล้ายกันpreserving hash in IE
สำหรับการเปลี่ยนเส้นทาง 302
การเพิ่มส่วนสำคัญของคำตอบแทนการเชื่อมโยงเพียงอย่างเดียว
เราใช้การSiteMinder
พิสูจน์ตัวตนในแอปพลิเคชันของเรา
ฉันคิดว่าหลังจากการตรวจสอบที่ประสบความสำเร็จSiteMinder
จะทำ302 redirection
กับผู้ใช้ร้องขอหน้าแอพลิเคชันโดยใช้แบบฟอร์มการเข้าสู่ระบบของตัวแปรที่ซ่อนอยู่value
(ที่จะเก็บผู้ใช้ร้องขอ URL /myapp/
- without hash fragment
เพราะมันจะไม่ถูกส่งไปยังเซิร์ฟเวอร์) redirect
ที่มีชื่อคล้ายกับ แบบฟอร์มตัวอย่างด้านล่าง
เนื่องจากค่าredirect
ตัวแปรที่ซ่อนอยู่มีเฉพาะโดยไม่มีส่วนแฮชและเป็นการเปลี่ยนเส้นทาง 302 ส่วนแฮชจะถูกลบโดยอัตโนมัติโดย IE ก่อนที่จะมาถึงแอปพลิเคชันของเราและวิธีแก้ปัญหาใด ๆ ที่เราพยายามในรหัสแอปพลิเคชันของเราไม่ได้ผล/myapp/
IE การเปลี่ยนเส้นทางไป/myapp/
เท่านั้นและจะมีการเชื่อมโยงไปถึงบนหน้าแรกของการเริ่มต้นของ https://ourapp.com/myapp/#/home
app
เสียเวลาเกือบวันเพื่อคิดหาพฤติกรรมนี้
วิธีแก้ปัญหาคือ:
มีการเปลี่ยนแปลงรูปแบบการเข้าสู่ระบบตัวแปรที่ซ่อนอยู่ ( redirect
) ค่าที่จะถือส่วนกัญชาโดยท้ายwindow.location.hash
พร้อมกับค่าที่มีอยู่ คล้ายกับโค้ดด้านล่าง
$(function () {
var $redirect = $('input[name="redirect"]');
$redirect.val($redirect.val() + window.location.hash);
});
หลังจากการเปลี่ยนแปลงนี้redirect
ตัวแปรที่ซ่อนอยู่จะจัดเก็บค่า URL ที่ผู้ใช้ร้องขอเป็น/myapp/#/pending/requests
และSiteMinder
กำลังเปลี่ยนเส้นทางไปยัง/myapp/#/pending/requests
ใน IE
Chrome, Firefox and IE
การแก้ปัญหาดังกล่าวข้างต้นทำงานได้ดีในทุกสามเบราว์เซอร์
ขอบคุณ @AlexFord สำหรับคำอธิบายโดยละเอียดและการแก้ปัญหานี้