Đây là những gì chúng tôi đã làm cho IE.
Nếu bạn có quyền kiểm soát miền mục tiêu, hãy lưu trữ tệp html (tĩnh) tại đó. Bao gồm html bằng iframe.
Bây giờ iframe này thực sự có quyền truy cập vào miền địa phương, vì vậy bạn có thể liên lạc giữa khung phụ huynh và khung con để nhận những gì bạn cần.
Điều này đã làm việc nhiều hơn tốt hơn XDomainRequest đối với chúng tôi.
window.postMessage là cách tốt nhất để thiết lập các thông tin liên lạc:
Nhưng tôi khá chắc chắn rằng chỉ bắt đầu làm việc kể từ khi IE8. Nếu bạn yêu cầu các trình duyệt cũ hơn, bạn phải sử dụng một bản hack khác.
Trong trường hợp của chúng tôi, đây là hệ thống 3-lớp của chúng tôi:
- CORS, cho các trình duyệt có hỗ trợ nó
- Một iframe & window.postMessage như một dự phòng chính
- Một proxy server-side tập lệnh dưới dạng dự phòng phụ
Tất cả các tùy chọn này hoạt động tốt, đáng tin cậy và không cảm thấy quá nhiều. Dự phòng thứ cấp hầu như không bao giờ được sử dụng.
Hãy nhớ rằng tiêu đề 'Xác thực' đặc biệt là đặc biệt và tôi sẽ không bị sốc khi bị chặn trong một số trường hợp nhất định. Chúng tôi đã thêm tiêu đề tùy chỉnh 'X-Authenticate' vì nó đã vượt qua mọi lúc.
Tôi đã xem xét giải pháp iframe trong những ngày qua. Nhưng vì bạn phải đặt 'document.domain', có vẻ như nó chỉ hoạt động cho giao tiếp giữa hai tên miền phụ của cùng một TLD. Nhưng còn hai TLD khác nhau thì sao? (Tôi có thể phải digg sâu hơn vào công cụ proxy-server vào cuối tuần ...) –
Giải pháp iframe * nên * hoạt động nếu khung nội tuyến được lưu trữ trên cùng một miền với API. Nếu một kịch bản proxy là một giải pháp cho bạn, điều đó có thể được * nhiều * dễ dàng hơn cho các mục đích của bạn. Lưu ý rằng đó là (thường) không quá nhiều proxy-server, vì nó chỉ là một kịch bản proxy phía máy chủ. – Evert
ok, tôi đã thực hiện công việc iframe. Tôi đang truyền một đối tượng với tất cả thông tin (tiêu đề, hậu thân, ...) đến cửa sổ khung, thực hiện các yêu cầu và trả về phản hồi. :) Về kịch bản proxy: Nếu tôi lưu trữ tập lệnh trên API-Server, tôi vẫn sẽ phải gửi yêu cầu với các tiêu đề trong Ajax. Vì vậy, kịch bản sẽ được trên cùng một máy chủ như trang 'request'-? (=^khách hàng)? Bằng cách này, IE cho phép tôi gửi tiêu đề, nội dung, v.v. và proxy gửi yêu cầu tới api-server (curl)?!? –