利用window.open如何绕过浏览器拦截机制
在浏览器的安全机制里,非用户触发的window.open方法是会被拦截的,例如:
var btn = $('#btn');
btn.click(function () {
// 算做用户触发,所以不会被拦截
window.open('http://cssha.com')
});
上面的window.open是用户click触发的,所以不会被拦截,可以正常打开新窗口。再看下面这个:
var btn = $('#btn');
btn.click(function () {
$.ajax({
url: '...',
success: function (url) {
// 会被拦截
window.open(url);
}
})
});
用户没有直接触发window.open,而是发出一个ajax请求,window.open方法被放在了ajax的回调函数里,这样的情况是会被拦截的,因为浏览器认定不是为用户所触发。
那么当用户点击按钮,发出ajax请求,如何在ajax请求完成后再打开新窗口,又不被拦截呢? 接着往下看:
var btn = $('#btn');
btn.click(function () {
// 先打开一个不被拦截的新窗口
var newWindow = window.open();
$.ajax({
url: '...',
success: function (url) {
// 然后修改新窗口的url
newWindow.location.href = url;
}
})
});
当用户点击按钮的时候,先打开一个空白页,这时不会被拦截,然后再发ajax请求,在ajax回调里面修改新窗口的 location.href,这样就不会被拦截了。
利用window.open如何绕过浏览器拦截机制的更多相关文章
- window.open方法被浏览器拦截的处理方式
问题现象 当我们在一个 ajax 回调中执行 window.open 方法时,新页面会被浏览器拦截. 原因 在 Chrome 的安全机制里,非用户直接触发的 window.open 方法,是会被拦截的 ...
- window.open()被部分浏览器拦截问题
下面代码一切从简,大家理解即可 一.原因:1.因为在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的: 二.什么情况下不会被拦截或会被拦截? 1. $('#btn'). ...
- 【html】window.open()被部分浏览器拦截问题
一.原因:1.因为在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的: 二.什么情况下不会被拦截或会被拦截? 1. $('#btn').click(function ( ...
- window.open跳过浏览器拦截
转自https://www.cnblogs.com/shizk/p/8458916.html $('#btn').click(function () { //打开一个不被拦截的新窗口 var newW ...
- 如何绕过chrome的弹窗拦截机制
如何绕过chrome的弹窗拦截机制 在chrome的安全机制里面,非用户触发的window.open方法,是会被拦截的.举个例子: var btn = $('#btn'); btn.click(fun ...
- ajax请求响应中用window.open打开新窗口会被浏览器拦截的解决方式
一.问题描述 ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是会被浏览器给拦截了,需要用户点下. 二.问题分析 浏览器之所以拦截新开窗口是因为该操作并 ...
- xss利用——BeEF#stage3(绕过同源策略与浏览器代理)
绕过同源策略 正式进入攻击阶段.因为SOP(同源策略)的存在,BeEF只能对被勾子钩住的页面所在域进行操作.如果有办法绕过SOP,那么无疑会使攻击面放大. 绕过SOP可从两方面入手.第一个是从浏览器本 ...
- window.open打开新窗口被浏览器拦截的处理方法
一般我们在打开页面的时候, 最常用的就是用<a>标签,如果是新窗口打开就价格target="_blank"属性就可以了, 如果只是刷新当前页面就用window.loca ...
- window.open被浏览器拦截的解决方案
现象 最近在做项目的时候碰到了使用window.open被浏览器拦截的情况,搞得人无比郁闷啊,虽然在自己的环境可以对页面进行放行,但是对用户来说,不能要求用户都来通过拦截.何况当出现拦截时,很多小白根 ...
随机推荐
- System.Web.NullPointerException
在.Net异步webApi中我们需要记录日志信息,需要获取客户端的ip地址,我们需要使用:HttpContext.Current.Request.ServerVariables["REMOT ...
- map小列
// 有关学生信息的头文件student.h代码如下 #include #include using namespace std; struct Student ...
- Sonatype安装
https://www.cnblogs.com/wotoufahaiduo/p/11223834.html Sonatype Nexus Repository Manage admin ccf0cab ...
- 浅谈JS中 var let const 变量声明
浅谈JS中 var let const 变量声明 用var来声明变量会出现的问题: 1. 允许重复的变量声明:导致数据被覆盖 2. 变量提升:怪异的数据访问.闭包问题 3. 全局变量挂载到全局对象:全 ...
- ES读写索引内幕分析
一.简介 ES中的索引都进行分片,每个分片都会保存多个副本.这些副本称为复制组,在添加或删除索引时必须同步副本.如果不这样,从不同的副本中读取的索引可能截然不同.保持分片副本同步并从中提供读取的过程被 ...
- Oracle 12cR1 RAC集群安装(二)--使用图形界面安装
Oracle 12cR1 RAC集群安装文档:Oracle 12cR1 RAC集群安装(一)--环境准备Oracle 12cR1 RAC集群安装(二)--使用图形界面安装Oracle 12cR1 RA ...
- Grafana+Prometheus实现Ceph监控和钉钉告警-转载(云栖社区)
获取软件包 最新的软件包获取地址 https://prometheus.io/download/ Prometheus 1.下载Prometheus $ wget https://github.com ...
- Pthon魔术方法(Magic Methods)-上下文管理
Pthon魔术方法(Magic Methods)-上下文管理 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.上下文管理方法 __enter__: 进入与此对象相关的上下文.如果 ...
- 在命令行中执行kms命令激活Microsoft Office 2010
激活office2010的命令是什么?激活office2010除了使用office2010激活工具之外,还可以使用kms命令来激活office2010,但是office2010激活命令还需考虑32位或 ...
- hive 初始化数据库报错
安装hive,初始化数据库的时候报错 schematool -dbType mysql -initSchema Metastore Connection Driver : com.mysql.cj.j ...