2011-02-17 71 views
34

Tôi có một trang mà tôi không muốn liên kết ngoài gửi liên kết giới thiệu để trang đích không biết chúng đến từ đâu.Dừng liên kết gửi liên kết giới thiệu đến đích

Tôi đoán điều này là không thể nhưng tôi chỉ muốn đảm bảo rằng không có bất kỳ ma thuật javascript ẩn nào có thể làm điều đó và điều đó sẽ hoạt động với một số trình duyệt (nếu không phải hầu hết).

Có thể một số mã trạng thái HTTP thông minh đang chuyển hướng kung-fu?

Something như thế này sẽ được hoàn hảo

<a href="example.com" send_referrer="false">link</a> 

Trả lời

4

Tôi cũng đang cố gắng tìm ra điều này.

Giải pháp mà tôi nghĩ là sử dụng url dữ liệu để ẩn trang thực mà tôi đến từ đó.

<a href='data:text/html;charset=utf-8, <html><script>window.location = "http://google.ca";</script></html>'>Link</a> 

Liên kết này sẽ mở trang chỉ chứa javascript để tải một trang khác. Trong thử nghiệm của tôi, không có liên kết giới thiệu nào được đưa đến đích cuối cùng. Tôi không biết những gì nó có thể gửi như là một referrer nếu nó đã cố gắng anyways, có thể là url dữ liệu? mà sẽ không cho đi nơi bạn đến.

Tính năng này hoạt động trong Chrome. Chrome là mối quan tâm duy nhất của tôi đối với vấn đề hiện tại của tôi nhưng đối với các trình duyệt không thích javascript trong các trang là url dữ liệu. Bạn có thể thử làm mới meta.

+0

Làm việc trong chrome. Không phải trong firefox không may. – zaius

8

Bigmack đang đi đúng hướng, nhưng thay đổi vị trí javascript vẫn gửi một liên kết giới thiệu trong firefox. Sử dụng làm mới meta dường như giải quyết vấn đề cho tôi.

<a href='data:text/html;charset=utf-8, <html><meta http-equiv="refresh" content="0;URL=&#39;http://google.com/&#39;"></html>'>Link</a> 
+0

Tôi tin rằng đây là những gì google làm cho các liên kết trong gmail - bạn bấm vào liên kết và đi đến một trang google theo dõi trống với một làm mới meta để liên kết ban đầu bạn nhấp vào. – wezell

25

HTML 5 bao gồm rel="noreferrer", là supported in all major browsers. Vì vậy, đối với các trình duyệt, bạn chỉ có thể viết:

<a href="example.com" rel="noreferrer">link</a> 

Ngoài ra còn có một shim sẵn cho các trình duyệt khác: https://github.com/knu/noreferrer

+4

Cảnh báo shim này phụ thuộc vào $ .browser không được chấp nhận. –

34

Đối với bất cứ ai ghé thăm vào năm 2015 và hơn thế nữa, bây giờ có một giải pháp thích hợp được hỗ trợ.

Các HTTP Referrer Policy đặc tả cho phép bạn kiểm soát giới thiệu-gửi cho các liên kết subresources (hình ảnh, script, stylesheets, vv) và, vào lúc này, đó là supported trên Firefox, Chrome, và Opera.

<meta name="referrer" content="no-referrer"> 

(Và một phiên bản cũ của spec được hỗ trợ bởi Microsoft Edge và Safari, nhưng tôi vẫn chưa tìm ra cách kiểm tra làm việc cho chúng ăn cú pháp cũ trong khi ăn mọi thứ khác cú pháp mới.)

Ngoài ra, nếu bạn muốn áp dụng nó để audio, img, link, script, và video thẻ tham khảo các nguồn lực đòi hỏi CORS, đừng quên cũng để thiết lập các thuộc tính crossorigin="anonymous" vào chúng vì vậy chỉ tối thiểu tuyệt đối (các Tiêu đề Origin) sẽ được chia sẻ.

(Bạn không thể thoát khỏi những Origin tiêu đề trong khi sử dụng CORS vì các trang web từ xa cần phải biết những gì miền được đưa ra yêu cầu để cho phép hoặc từ chối nó.)

+0

Lưu ý: Chrome cung cấp lỗi này: 'Không thể đặt chính sách liên kết giới thiệu: Giá trị' không 'không phải là' luôn luôn ',' mặc định ',' không bao giờ ',' không có tham chiếu ',' không có giới thiệu khi hạ cấp ',' origin ',' origin-when-crossorigin 'hoặc' an toàn-url '. Chính sách liên kết giới thiệu của tài liệu này đã được giữ nguyên.' Các vaue 'không' được đề cập có vẻ không chính xác. –

+1

@ TomPažourek Cảm ơn. Tôi nghĩ đó là cú pháp cũ. Không chắc chắn làm thế nào tôi đã kết thúc bằng cách sử dụng nó. – ssokolow

+0

Vẫn còn một số trình duyệt chuyển thẻ tham chiếu với thẻ meta được đề xuất. Có cách nào tốt hơn để ngừng gửi người giới thiệu đến BẤT K browser trình duyệt nào không? Việc sử dụng 'noopener' có giúp được không? – Alex

0

Bên cạnh những thông tin đã được được cung cấp. Rất nhiều thông tin về chủ đề ở đây: https://w3c.github.io/webappsec-referrer-policy/#referrer-policy-no-referrer

Cụ thể cho phép bạn gửi hoặc không gửi thông tin giới thiệu nếu bạn cần các quy tắc khác nhau cho cùng một yêu cầu xuất xứ hoặc gốc.

Điều gì đó cần xem xét tùy thuộc vào trường hợp sử dụng cụ thể của bạn. tức là nếu bạn đang kéo hình ảnh/css/javascript từ các trang web của bên thứ ba, thì bạn có thể không muốn xác định URL mà bạn đang thực hiện việc này và do đó sẽ sử dụng tùy chọn không có liên kết giới thiệu. Trong khi nếu bạn đang liên kết ra các trang web khác từ trang web của riêng bạn, bạn có thể muốn họ biết rằng bạn đang gửi cho họ lưu lượng truy cập. Luôn luôn suy nghĩ thông qua các tác động của điều này trên cả hai mặt. Nếu có xung đột trong hai lĩnh vực này, thì có các tùy chọn khác như thêm thông số theo dõi UTM vào cuối URL có thể có ích cho một số người. Chi tiết đầy đủ ở đây: https://www.contradodigital.com/2014/06/03/importance-utm-tracking-parameters-social-media/

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