2014-06-17 13 views
8

Tôi đang cố gắng sử dụng EventSource cho kết nối trực tuyến tới máy chủ. Nhưng tôi cần đặt tiêu đề khóa phiên trên yêu cầu XHR cơ bản. Làm thế nào để truy cập XHR từ đối tượng EventSource nếu nó thậm chí có thể? Cảm ơn! Lưu ý rằng tôi không chắc chắn rằng CORS thậm chí còn được hỗ trợ với EventStream chưa, điều này sẽ ngăn điều này làm việc cho tôi ngay từ đầu, nhưng tôi đã đọc ở một số nơi nhất định mà nó cần được hỗ trợ ...Đầu đề EventSource XHR

Trả lời

8

Đầu tiên, tin tốt là mọi trình duyệt hỗ trợ SSE cũng có CORS hỗ trợ và làm việc với nó. (Một năm trước đây đã có vấn đề, vì vậy bạn sẽ chỉ trúng vấn đề nếu đối phó với những người dùng nhấn mạnh vào chạy ra khỏi phiên bản cập nhật của một trình duyệt tự động cập nhật hiện đại, đó là một sự kết hợp bất thường.)

  • Bây giờ tin xấu: bạn không thể đặt tiêu đề trên các yêu cầu EventSource. Bạn sẽ cần phải quay trở lại để 'tốt XHR ole streaming nếu bạn muốn để có thể thiết lập tiêu đề.

  • Mặt khác, cookie được gửi, vì vậy nếu thông tin phiên của bạn có thể được gửi bằng cookie thì nó sẽ hoạt động.

  • Mặt khác, cookie xung đột với CORS; vì vậy nếu bạn cần cả SSE và xác thực với các trang web của bên thứ ba, bạn sẽ bị thất vọng. Bạn phải dự phòng để sử dụng XHR.

Xin lỗi cho các plug trắng trợn, nhưng nguồn thông tin tốt nhất mà tôi biết, trên cả các chủ đề này, là chương 9 của my book on SSE. Đó là chương khó viết nhất :-).

0

Một cách tiếp cận khác là gửi mã thông báo ủy quyền của bạn thông qua URL và kết hợp với HTTPS, nó sẽ vẫn an toàn khi bị xâm nhập bằng mã thông báo.

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