16

Tôi có mã sử dụng đối tượng XDomainRequest của Microsoft trong IE8. Mã trông giống như sau:XDomainRequest có thể được thực hiện để làm việc với SSL không?

var url = "http://<host>/api/acquire?<query string>"; 
var xdr = new XDomainRequest(); 
xdr.onload = function(){ 
    $.("#identifier").text(xdr.responseText); 
}; 
xdr.open("GET", url); 
xdr.send(); 

Khi lược đồ trong "url" là "http: //" lệnh hoạt động tốt. Tuy nhiên, khi lược đồ là "https: //" IE8 cho tôi lỗi JavaScript "Truy cập bị từ chối". Cả hai lược đồ đều hoạt động tốt trong FF 3.6.3, ở đây tôi đang sử dụng XmlHttpRequest. Với cả hai trình duyệt, tôi tuân thủ W3C Access Control. "http: //" hoạt động bắt nguồn gốc cho cả hai trình duyệt. Vì vậy, vấn đề là với IE8, XDomainRequest và SSL.

Chứng chỉ SSL không phải là vấn đề. Nếu tôi nhập https: // <host>/vào thanh địa chỉ của IE8, trong đó <host> giống như trong "url" ở trên, trang tải tốt.

Vì vậy, chúng tôi có:
- nhấn https: // <host>/trực tiếp từ trình duyệt hoạt động tốt;
- nhấn https: // <host>/api/obtain? <query string> qua XDomainRequest không được phép.

Nó có thể được thực hiện? Tôi có để lại thứ gì đó không?

Trả lời

18

Rõ ràng, câu trả lời là ở đây: http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx

Point 7 trên trang này cho biết, "Yêu cầu phải được nhắm mục tiêu đến các chương trình tương tự như các trang lưu trữ."

Dưới đây là một số các văn bản hỗ trợ cho điểm 7:

"Đó chắc chắn là ý định của chúng tôi để ngăn chặn các trang HTTPS từ làm XDomainRequests tài nguyên dựa trên HTTP, như kịch bản mà trình bày một Mixed bảo mật nội dung mối đe dọa mà nhiều nhà phát triển và hầu hết người dùng không hiểu.

Tuy nhiên, hạn chế này là quá rộng, vì nó ngăn chặn HTTP trang từ phát hành XDomainRequests nhắm mục tiêu đến trang HTTPS. Trong khi đó đúng t mũ trang HTTP có thể đã bị xâm phạm, không có lý do nào là mà nó không bị cấm nhận tài nguyên công khai một cách an toàn ".

Có vẻ như câu trả lời cho câu hỏi ban đầu của tôi là: CÓ, nếu trang lưu trữ có thể sử dụng lược đồ "https: //"; KHÔNG, nếu không thể.

+1

fwiw, Tôi gặp sự cố với yêu cầu XDR đối với URL https, ngay cả khi trang lưu trữ cũng được phân phát qua https (và tên miền được yêu cầu là tên miền phụ của trang lưu trữ.) 'Hoạt động khi tôi sử dụng http cho cả hai, Tuy nhiên. – broofa

+1

Tôi cũng không có may mắn với XDR khi sử dụng https, ngay cả khi trang yêu cầu cũng là https. Nó chỉ đơn giản là chuyến đi sự kiện 'onerror' (một cuộc gọi lại được cung cấp một cách hữu ích cho thông tin không). Tôi đang liên lạc giữa hai máy chủ ảo trên máy tính phát triển của mình và đã bắt đầu tự hỏi liệu có liên quan gì đến nó không (chứng chỉ tự ký?). –

+0

@SethBro yeah tôi cũng tự hỏi về một chứng chỉ tự ký trong một dự án tôi hiện đang làm việc trên. – the0ther

Các vấn đề liên quan