Tôi biết điều này đã được yêu cầu trước ở nhiều hình thức khác nhau, nhưng dường như tôi không thể giải quyết được vấn đề. Tôi đã thử sử dụng cả jQuery và API JS gốc để thực hiện các yêu cầu Ajax.Cookie HTTP và các yêu cầu Ajax qua HTTPS
tình hình của tôi là những sản phẩm sau (xem sơ đồ kèm theo):
- trình duyệt làm cho HTTP yêu cầu
- Server đáp ứng và thiết lập Cookie dai dẳng
- trình duyệt làm cho HTTP yêu cầu Ajax, Cookie là có ổn
- Máy chủ phản hồi như mong đợi, cập nhật Cookie
- Trình duyệt thực hiện yêu cầu HTTPS Ajax, Cookie không còn ở đó nữa (?!)
- Server cung cấp cho "mặc định" phản ứng, vì không có Cookie (hành vi ngoài ý muốn)
Trước khi bất cứ ai bắt đầu một bài thuyết trình về yêu cầu miền chéo cho tôi nêu một vài điều:
- Tôi biết rằng đây là yêu cầu tên miền chéo (giao thức khác) và đó là lý do tại sao Máy chủ đặt tiêu đề
Access-Control-Allow-Origin
trong phản hồi (và tôi đang sử dụng Chrome và Firefox, cả hai đều hỗ trợ CORS) - Điều tôi cũng biết rằng cookie HTTP phải được quản lý qua HTTPS (xem here) s ince host là giống nhau
- (EDIT) Cookie được đặt đúng cho miền chung (ví dụ: .domain.ext) và cả cờ HttpOnly lẫn cờ an toàn đều không được đặt
Vì vậy, tại sao, tại sao trình duyệt không chuyển cookie khi thực hiện cuộc gọi HTTPS Ajax? Bất kỳ ý tưởng? Tôi sắp mất trí ...
+-----------+ HTTP Request +-----------+
|Browser |+---------------->|Server |
+-----------+ +-----------+
HTTP Response
<----------------+
Set-cookie
Ajax HTTP Req.
+---------------->
Cookie (OK)
HTTP Response
<----------------+
Set-cookie (OK)
Ajax HTTPS Req.
+---------------->
No Cookie (!!!)
Capture HTTP yêu cầu bãi và kiểm tra nếu có của 'secure' và' http-only 'flags được đặt trong câu lệnh' Set-Cookie'. Điều đó ít nhất sẽ là một nơi tốt để bắt đầu. – dpq
Không được đặt. – NeXuS
http://stackoverflow.com/questions/5441836/jquery-cookie-values-not-maintained-while-moving-from-http-to-https trông như thế này là một hạn chế có chủ ý. – dpq