记录--a标签跳转新地址无法访问,但手动输入新地址可以访问
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助
问题描述
- 最近遇到一个有意思的问题,项目中有一个地方,点击需要跳转到一个新的域名地址
- 笔者使用a标签做跳转,跳是跳过去了,可是跳过去以后,反而打不开了,显示403佛伯乐
- 蛤?
大致这样的代码:
1 | <a href= "http://abcdefg.com" target= "_blank" >点击跳转</a> |
原因分析
- 既然跳过去出问题,那么猜测是另外一个项目做了拦截
- 于是就去问问之前负责过
http://abcdefg.com
这个项目的同事 - 被告知:
- 为了安全考虑,对
document.referrer
进行了拦截判断(前后端均可拦截操作) - developer.mozilla.org/zh-CN/docs/…
- 了解,既然直接跳过去,会把referrer带着,那么就想办法,不带着就行了
4种解决方案
from
推荐下面的解决方案三
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | <!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" > <meta name= "viewport" content= "width=device-width, initial-scale=1.0" > <title> from </title> <!-- 解决方案一 禁内容referrer --> <!-- <meta name= "referrer" content= "never" > --> <!-- 解决方案二 不带着referrer --> <!-- <meta name= "referrer" content= "no-referrer" > --> </head> <body> <!-- 解决方案三 a标签加rel属性控制 --> <a href= "http://127.0.0.1:5502/referrer.html" target= "_blank" rel= "noopener noreferrer" >点击跳转</a> <!-- 解决方案四 换成window.open并注入js执行代码 --> <!-- <button>点击跳转</button> <script> let btn = document.querySelector( 'button' ) btn.onclick = () => { window.open( 'javascript:window.name;' , ` <script>location.replace( "http://127.0.0.1:5502/referrer.html" )<\/script> `) } </script> --> </body> </html> |
referrer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | <!DOCTYPE html> <html lang= "en" > <head> <meta charset= "UTF-8" > <meta name= "viewport" content= "width=device-width, initial-scale=1.0" > <title>referrer</title> </head> <body> <h2></h2> <script> let referrer = document.referrer let h2 = document.querySelector( 'h2' ) if (referrer) { h2.innerHTML = '不允许从别的地方跳转过来访问' } else { h2.innerHTML = '欢迎直接访问' } </script> </body> </html> |
可以用vscode的插件live serve跑一下两个html文件,效果更佳
referrer的用处
- document.referrer这个字段记录了,项目是怎么被打开的(是直接浏览器地址栏打开,还是从某个地方跳转过来打开的)
- 可以统计访问源,或做一些控制,或者可以返回到访问源
A bad pen is better than a good memory...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具