2010-01-11 42 views
8

Tôi có một trang trong Javascript tôi thêm vào vị trí băm một cái gì đó như: location.hash = "initial_source = previous_referrer".Gửi một vị trí băm thông qua một liên kết giới thiệu

Sau đó, window.location được thực hiện để chuyển hướng.

Tuy nhiên người nhận nhận được liên kết giới thiệu trong yêu cầu của mình mà không cần phần băm (#).

Có thể nào đó bằng cách nào đó sửa đổi URL trong trang ban đầu, không có chuyển hướng, do đó, liên kết giới thiệu cuối cùng là điều mong muốn?

Cảm ơn bạn.

Trả lời

15

Đầu tiên, phần hash của URL chỉ được sử dụng ở phía máy khách. Nó sẽ không bao giờ xuất hiện trong nhật ký máy chủ, yêu cầu hoặc như một phần của chuỗi REFERRER.

Thứ hai, phần duy nhất của url có thể được thay đổi mà không cần làm mới trang ở phía máy khách là băm. Vì vậy, kết hợp với tuyên bố đầu tiên của tôi, và nó trở nên rõ ràng bạn không thể làm những gì bạn đang muốn.

Hành động tốt nhất là kiểm tra nếu initial_referrer được đặt trong Chuỗi truy vấn. Nếu không, trước khi tải trang, hãy chuyển hướng đến cùng một trang nhưng thêm giá trị của bạn vào chuỗi truy vấn. Bây giờ, khi trang của bạn thay đổi qua location.href = thông tin liên kết giới thiệu chính xác sẽ được gửi.

+0

Hmm ... Tôi hiểu. Đã tự hỏi nếu tôi có thể tránh một yêu cầu khác. –

1
location.href = redirect_url.split("#")[0] + "#" + document.referrer; 
+4

Băm sẽ không bao giờ được gửi đến máy chủ. Nó chỉ có ứng dụng ở phía khách hàng. –

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