5Mi / wumi_blog

for recording improvimg my experience
21 stars 0 forks source link

document.referrer和window.opener 获取页面来源路径 #57

Open 5Mi opened 8 years ago

5Mi commented 8 years ago

document.referrer

referrer 属性可返回载入当前文档的文档的 URL。

只有当用户在上一个页面点击链接到达当前页面,document.referrer才会有值当用户输入这一页的网址、通过response.redirect、用了ssl这些情况referrer都会为空。 另外,其必须通过http协议使用。否则不能得到返回值,即值为空。

window.opener

Returns a reference to the window that opened this current window.

When a window is opened from another window (using Window.open), it maintains a reference to that first window as window.opener. If the current window has no opener, this method returns NULL.

// 获取页面来源路径
            let ref = '';
            if (document.referrer.length > 0) {
                ref = document.referrer;
            }
            try {
                if (ref.length == 0 && opener.location.href.length > 0) {
                    ref = opener.location.href;
                }
            } catch (e) {
                //console.error(e);
                ref = ''
            }
5Mi commented 6 years ago

请求头中的 referrer

项目中引用了外链图片, 在本地页面里用img标签访问页面图片返回403 forbidden。 而浏览器可以直接打开. 应该好像是他们的服务器做了处理(防盗链)

由于可以直接从浏览器打开,就简单设置了个 meta标签 <meta name="referrer" content="no-referrer" /> 隐藏请求来路

参考 Referrer策略与防盗链 关于referrer