Tôi có một số mã Ajax đang hoạt động trong Safari, Chrome và Firefox nhưng không hoạt động trong IE9.Tại sao yêu cầu miền chéo này hoạt động trong các trình duyệt khác chứ không phải IE9?
Trang này nằm trên http://foo.com/test.aspx
và đang thực hiện yêu cầu AJAX cho dịch vụ web được lưu trữ trên https://service.foo.com
. Tôi nghĩ rằng tôi sẽ không có bất kỳ vấn đề tên miền chéo nào nhưng IE9 đang chặn nó, có vẻ như tôi làm: (
var tempUrl = "https://service.foo.com/dummy.svc/test?hi=bye";
$.get(tempUrl, "html");
Như tôi đã đề cập, mã hoạt động trong 3 trình duyệt khác, không phải IE9. . (tôi chỉ quan tâm đến IE9, không IE8 trở lên)
tôi đã làm một số đào và tìm thấy this article trên MSDN nói rằng:
yêu cầu Cross-miền đòi hỏi lẫn nhau sự đồng ý giữa các trang Web và máy chủ . Bạn có thể bắt đầu yêu cầu tên miền chéo trong trang Web của bạn bằng cách tạo đối tượng XDomainRequest ngoài đối tượng cửa sổ và mở kết nối vào một miền cụ thể. Trình duyệt sẽ yêu cầu dữ liệu từ máy chủ của tên miền bằng cách gửi một tiêu đề Xuất xứ với giá trị xuất xứ. Nó sẽ chỉ hoàn tất kết nối nếu máy chủ phản hồi với tiêu đề Access-Control-Allow-Origin của hoặc * hoặc URL chính xác của trang yêu cầu . Hành vi này là một phần của World Wide Web Consortium (W3C) 's ứng dụng web làm việc khuôn khổ dự thảo của nhóm trên phía máy khách thông tin liên lạc tên miền chéo rằng đối tượng XD2R1601 XDomainRequest tích hợp với.
Trước khi tôi đi xuống đường dẫn sử dụng XDR Tôi muốn xác minh với những người thông minh hơn tôi xem đây có phải là phương pháp phù hợp hay không.
- Thêm
Response.AddHeader("Access-Control-Allow-Origin", "*");
đến trang của tôi - Tạo mã JScript điều kiện phát hiện IE9 và sử dụng XDR thay vì các cuộc gọi jquery thường xuyên Tôi đang sử dụng với
$.get
.
Tôi có hoàn toàn tắt hoặc đây có phải là cách phù hợp để thực hiện việc này không?
(Giả sử đó là cách đúng đắn để đi, nơi nào các Acecss-Control-Allow-Origin
phản ứng tiêu đề đi - trên trang của mình tại http://foo.com/test.aspx hoặc trên webservice tại https://service.foo.com?)
Nói chung, JQuery nhận thức được các hạn chế về cùng một nguồn gốc của trình duyệt và không nên cố gắng sử dụng CORS trong các trình duyệt không hỗ trợ nó. Bạn có thấy lỗi tập lệnh trong bảng điều khiển Công cụ dành cho nhà phát triển F12 của IE9 không? – EricLaw
Eric, không có lỗi nào được ném trong bảng điều khiển công cụ dành cho nhà phát triển. – TMC