总结

  • 由于菜单栏中前进后退的存在,document.referrer获取页面来源的方法并不可靠
  • 可以通过判断 window.opener 是否为 null,来限制通过地址栏输入url访问。但是必须使用 window.open 来实现页面跳转

document.referrer

定义

  • 打开到当前页面的那个页面的URI

    • A Uniform Resource Identifier (URI) 是一个紧凑的字符串用来标示抽象或物理资源。
    • 它包括了URL和URN
    • URL和URN的区别在于,URL带有网络访问协议,例如ftp://ftp.is.co.za/rfc/rfc1808.txttel:+1-816-555-1212不属于URL)

返回空字符串的情况

  • 纠错:跨域只有在特殊的几种方法不可以,其他都是可行的
  • 纠错:https跳转http谷歌和IE9亲测都可以
  • a标签跨域可以获得
  • meta标签来控制不让浏览器发送referer<meta content="never" name="referrer">
    • 请参考https://www.cnblogs.com/qq3279338858/p/10844401.html
  • a标签设置rel="noreferrer"(兼容IE7+)
  • 直接在浏览器中输入地址
  • 通过修改Location进行页面导航的方法,除了以下几种,其余都能成功获取
    • location.assign:IE9跨域后无法获取;同域时谷歌和IE都可以获取
    • location.reload:谷歌可以,IE9不可以。带不带参数都一样
  • history
    • 所有方法在IE9均无法获得(包括back 、forward、go)
    • 谷歌也只有以下方法可以(pushState、replaceState)
  • window.open方式打开新窗口
    • IE获取不到
    • 谷歌可以正常获取
  • 鼠标拖拽打开新窗口
  • 点击Flash内部链接,各个浏览器效果不同(不详述)
  • 在微信对话框中,点击进入微信自身浏览器
  • 扫码进入微信或QQ的浏览器

window.opener

定义

  • 如果当前窗口是由另一个窗口打开的, window.opener保留了那个窗口的引用(window对象). 如果当前窗口不是由其他窗口打开的, 则该属性返回 null.

能够获取的条件

  • 只有通过window.open才会返回对象,其他都是null

    • 跨域时谷歌返回的对象,不能访问资源,只能对窗口本身进行操作
    • IE9同域时可以通过访问 window.opener.location.href 对象去获取丢失的referrer信息。跨域依然能够获取到对象,但location为空

页面跳转、URL直接访问限制的更多相关文章

  1. 页面跳转 url地址的写法

    跳转地址:分两类,wikipage和aspx页面: wikipage:当新建webpart,在网站里新建一个wikipage,然后将webpart添加进wikipage,这种情况下跳转页面需要添加si ...

  2. 微信小程序页面跳转url如何传对象参数

    两步走 首先第一步:wx.navigateTo({ url:"XXX"+"&params="+ JSON.stringify(obj); }) 第二步获 ...

  3. nodejs处理页面跳转url地址的处理

    使用status函数设置状态码 router.get("/list/:id",(req,res)=>{ let id = req.params.id; res.locals. ...

  4. Html中设置访问页面不在后进行其他页面跳转

    Html中设置访问页面不在后进行其他页面跳转 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" & ...

  5. PHP 登录完成后如何跳转上一访问页面

    访问网站页面时,有的页面需要授权才能访问,这时候就会要求用户登录,跳转到登录页面login.php,怎么实现登录后返回到刚才访问的页面 项目需求 访问网站页面时,有的页面需要授权才能访问,这时候就会要 ...

  6. 微信小程序页面-页面跳转失败WAService.js:3 navigateTo:fail url not in app.json

    微信小程序新建页面的要素一是新建的文件名称和其子文件的名称最好一致,不然容易出问题,在小程序页面跳转中如果出现WAService.js:3 navigateTo:fail url not in app ...

  7. 页面跳转时,url 传大数据的参数不全的问题+序列化对象

    1.页面跳转时,url 传大数据的参数不全的问题 //传参: url: '/pages/testOfPhysical/shareEvaluation?detailInfo=' +encodeURICo ...

  8. Loadrunner如何遍历一个页面中的url并进行访问?

    最近在网上到一个关于loadrunner遍历一个页面中的url并进行访问的脚本,就把它用我们自己的项目实践了一下,发现有一点不完善. 原始版本: Action(){char temp[64];int ...

  9. 自定义PHP页面跳转函数redirect($url, $time = 0, $msg = '')

    利用PHP的header()函数,可以实现页面跳转,如 header("Location: " . $url); 但它有个缺点,一旦HTTP报头块已经发送,就不能使用 header ...

随机推荐

  1. 368. Largest Divisible Subset

    class Solution { public: vector<int> largestDivisibleSubset(vector<int>& nums) { vec ...

  2. 前端小白第一次使用redux存取数据练习

    在学习了redux基本教程后,课程参考如下网址:https://www.redux.org.cn/docs/introduction/CoreConcepts.html,开始着手练习 1.首先编写一个 ...

  3. java web 登录后更新JSESSIONID

    https://huangqiqing123.iteye.com/blog/2031455 登录前的请求一般都是http的,http是不安全的,假设用户登录前的JSESSIONID被人取得,如果登录后 ...

  4. Java入门练习之四则运算

    Java入门练习之四则运算 项目目的 制作一个Java控制台程序,让他可以随机生成四则运算,并针对用户的输入判断对错. 项目分析 该项目本质上是一个四则运算出题器,可以创建一个Question类,其中 ...

  5. 汇编实验一 查看CPU和内存,用机器指令和汇编语言指令编程

    在装完DosBox环境之后,就可以用debug模式进行汇编指令的编程了. 实验内容:      首先用a指令进行数据的储存,然后用t命令进行调试. 可以发现ax,bx在不同的命令下发生了改变,cs的地 ...

  6. transmission跳过文件校验功能实现

    贴吧链接:https://tieba.baidu.com/p/4839039900 GitHub:https://github.com/superlukia/transmission-2.92_ski ...

  7. 图片万能居中css

    .div{text-align:center;} .div img{vertical-align:middle;} .div:after{content:"";display:in ...

  8. python 集成cython && push 测试pip 仓库

    昨天创建了一个简单的python 集成cython 的项目 master 但是有几个问题 目前的构建时基于make 同时需要本地执行,为了方便基于pip 的安装,做了如下调整 项目准备 项目使用ven ...

  9. 面试题-linux基础

    Linux基础和git linux的基础命令(怎么区分一个文件还是文件夹) ls -F  在显示名称的时候会在文件夹后面添加“/”, 在文件后面加“*” 日志以什么格式,存放在哪里?日志可以存储在“/ ...

  10. VS重新生成项目失败,但是不报错

    相信很多同行可能都遇到这种情况: 使用SVN或者其他项目管理工具checkout一个项目后,重新生成项目后,生成失败了,但是没有显示任何错误: 其实,这个大多数是因为类库里面的引用失效导致的,我们可以 ...