Làm thế nào để chia sẻ cookie chéo nguồn gốc? Cụ thể hơn, làm thế nào để sử dụng Set-Cookie
tiêu đề kết hợp với tiêu đề Access-Control-Allow-Origin
?
Đây là lời giải thích về tình huống của tôi:
Tôi đang cố gắng đặt cookie cho một API đang chạy trên localhost:4000
một ứng dụng web được lưu trữ trên đó localhost:3000
.
Có vẻ như tôi đang nhận được các tiêu đề phản hồi phù hợp trong trình duyệt, nhưng tiếc là chúng không có tác dụng. Đây là các tiêu đề phản hồi:
HTTP / 1.1 200 OK Access-Control-Allow-Origin: http: // localhost: 3000 Thay đổi: Nguồn gốc, Chấp nhận-Mã hóa Set-Cookie: token = 0d522ba17e130d6d19eb9c25b7ac58387b798639f81ffe75bd449afbc3cc715d6b038e426adeac3316f0511dc7fae3f7; Tuổi tối đa = 86400; Tên miền = localhost: 4000; Đường dẫn = /; Expires = Thứ Ba, ngày 19 tháng 9 năm 2017 21:11:36 GMT; HttpOnly Nội dung-Loại: ứng dụng / json; charset = utf-8 Nội dung-Độ dài: 180 ETag: W / "b4-VNrmF4xNeHGeLrGehNZTQNwAaUQ" Ngày: Thứ Hai, ngày 18 tháng 9 năm 2017 21:11:36 GMT Kết nối: giữ cho cuộc sống
Hơn nữa, tôi có thể thấy cookie bên dưới Response Cookies
khi tôi kiểm tra lưu lượng truy cập bằng tab Mạng của các công cụ dành cho nhà phát triển của Chrome. Tuy nhiên, tôi không thể thấy cookie được đặt trong tab Ứng dụng bên dưới Storage/Cookies
. Tôi không thấy bất kỳ lỗi CORS nào, vì vậy tôi cho rằng tôi đang thiếu một thứ khác.
Bất kỳ đề xuất?
Cập nhật tôi:
Tôi đang sử dụng mô-đun yêu cầu trong ứng dụng React-Redux để đưa ra yêu cầu tới một /signin
điểm cuối trên máy chủ. Đối với máy chủ tôi sử dụng express.
Máy chủ Express:
res.cookie ('token', 'xxx-xxx-xxx', {maxAge: 86400000, httpOnly: true, domain: 'localhost: 3000'})
Yêu cầu trong trình duyệt:
request.post ({uri: '/ signin', json: {userName: 'userOne', password: '123456'}}, (err, response, body) => { // làm công việc })
Cập nhật II:
Bây giờ tôi đang đặt tiêu đề yêu cầu và phản hồi như điên rồ, đảm bảo rằng chúng có mặt trong cả yêu cầu và phản hồi. Dưới đây là ảnh chụp màn hình. Chú ý các tiêu đề Access-Control-Allow-Credentials
, Access-Control-Allow-Headers
, Access-Control-Allow-Methods
và Access-Control-Allow-Origin
. Xem xét vấn đề tôi tìm thấy trên github của Axios , tôi có ấn tượng rằng tất cả các tiêu đề bắt buộc hiện đã được thiết lập. Tuy nhiên, vẫn không có may mắn ...