Bạn chỉ có thể thay đổi tên miền của cookie trên máy khách hoặc khi được đặt trên máy chủ. Khi một cookie đã được thiết lập, đường dẫn và thông tin miền cho nó chỉ tồn tại trên máy khách. Vì vậy, các cookie hiện tại không thể thay đổi tên miền trên máy chủ, vì thông tin đó không được gửi từ máy khách đến máy chủ.
Ví dụ, nếu bạn có một cookie mà trông như thế này trên máy tính địa phương của bạn:
MYCOOKIE:123, domain:www.test.com, path:/
Máy chủ của bạn sẽ chỉ nhận được:
MYCOOKIE:123
trên máy chủ. Tại sao đường dẫn và miền không được gửi? Bởi vì trình duyệt giữ rằng thông tin về khách hàng, và doesnt bận tâm gửi nó cùng, vì nó chỉ gửi cookie này đến máy chủ của bạn nếu trang được tại www.test.com và tại đường dẫn /.
Vì đó là máy chủ của bạn, bạn sẽ có thể thay đổi mã để tạo cookie mới. Nếu bạn cảm thấy bạn cần phải làm điều đó bên ngoài mã của bạn vì lý do nào đó, bạn có thể làm như vậy với một số thứ như sau, nhưng bạn phải xem chính xác cách cookie của bạn được viết trong tiêu đề để khớp chính xác. Sau đây là một phỏng đoán chưa được kiểm tra tại một giải pháp khả thi cho việc này, sử dụng Apache mod_headers
:
<IfModule mod_headers.c>
Header edit Set-Cookie (.*)(domain=.company.com;)(.*) $1 domain=app.company.com; $2
</IfModule>
Bạn cũng có thể sử dụng mod_headers
thay đổi cookie nhận được từ khách hàng, như vậy, nếu cần thiết:
<IfModule mod_headers.c>
RequestHeader edit Cookie "OLD_COOKIE=([0-9a-zA-Z\-]*);" "NEW_COOKIE_NAME=$1;"
</IfModule>
Điều này sẽ chỉ đổi tên cookie bạn nhận được trong yêu cầu.
Nguồn
2015-09-25 18:21:27
Thay đổi chính xác điểm đó? Đối với máy chủ hoặc cho khách hàng? Tôi không hiểu. –
Thay đổi nó tại máy chủ. Về cơ bản, vì apache được cấu hình như một máy chủ proxy, tất cả lưu lượng giữa máy khách và máy chủ ứng dụng được định tuyến thông qua máy chủ apache. Và những gì tôi đang cố gắng thực hiện là thay đổi tên miền cookie được thiết lập bởi ứng dụng, trong proxy apache trước khi cookie đến được máy khách. –
@user Tôi hiểu. Tôi nghĩ đây là loại proxy ngược lại có thể làm lớn - không biết Apache có khả năng đó hay không. Tôi vẫn không chắc tôi hiểu tại sao bạn cần điều này, mặc dù. Sẽ không có một yêu cầu gửi đi đặt cookie cho miền proxy ngay từ đầu? –