你不知道的HTML

2020-03-17  本文已影响0人  RexingLeung

[TOC]

利用image测试网速 , 上报数据

对于img标签 , 它的资源是可以跨域的 , 通过src特有的属性 , 但是img标签有一个属性 , crossorigin="anonymous" , 这个属性是告诉后端 , 我需要去跨域 , 如果后端不让我们跨域 , 这张图片就协商不成了
例如下面img标签的 src 为 test.png

<img crossorigin="anonymous" src="test.png" />
<!--这里的图片路径我们由不同的服务器返回 , 根据不同的图片大小 , 以及时间差 , 就可以计算出网速 -->
<script>
    var s = Date.now();
    var image = new Image();
    image.src = 'http://ip地址/test.png' // 假设我们已知这张图片大小为4
    image.onload = function (){
        var e = Date.now();
        var w = 4 / (e - s) * 1000 // 这样就可以算出多少k/s了
    }
</script>

第二点 : 做上报数据 --- 上报数据类似于埋点功能 , 系统性能监控平台 , 系统的bug监控 , 打点
具体实现 , 用户在对该页面进行点击 , 离开等一些操作后 , 会自动发送一个特别小的图片过去给服务端 , 服务端会根据传输过去的图片token进行分析,
分析点1 : 为什么不用ajax走网络请求 , 正常来说 , 如果走ajax意味着, 就要设计一个接口 , 以及对应的数据库 , 一般来说 , 这种设计接口是没有必要的 , 只需要用户端主动传输就可以
如果想要js做统计的话是需要 , 以下代码做统计

navigator.sendBeacon("abc.php", analyticsData) // 发送成功返回true , 假设数据大小被限制或者请求不成功 , 返回false

什么是navigator.sendBeacon

navigator.sendBeacon 浏览器支持

CSS远程攻击漏洞

css的远程攻击, 一般都是利用css都url属性 , 例如: background

<style>
.test{
background: url(js脚本) /*通过这样攻击站点 , 例如一些挖矿注入脚本*/
}
</style>

说个题外话 , 跨域的问题 , 可以使用js压缩进图片 , 解决跨域 jstopng的问题

iframe远程localStorage扩容

本域名的iframe的一个值可以通过postMessage , 可以向另外一个域 , 发信息 , 那个域接到信息 , 可以把信息送回来

注意点 : 什么是postMessage
解释 : window.postMessage() 方法可以安全地实现跨源通信。通常,对于两个不同页面的脚本,只有当执行它们的页面位于具有相同的协议(通常为https),端口号(443为https的默认值),以及主机 (两个页面的模数 Document.domain设置为相同的值) 时,这两个脚本才能相互通信。window.postMessage() 方法提供了一种受控机制来规避此限制,只要正确的使用,这种方法就很安全。从广义上讲,一个窗口可以获得对另一个窗口的引用(比如 targetWindow = window.opener),然后在窗口上调用 targetWindow.postMessage() 方法分发一个 MessageEvent 消息。接收消息的窗口可以根据需要自由处理此事件。传递给 window.postMessage() 的参数(比如 message )将通过消息事件对象暴露给接收消息的窗口。

说回iframe在不用二级域中 , 只要设置父级域名相同 , 子域名下都cookie是可以相互访问

html语义化都重要性

更好的seo , 让爬虫知道网站结构 , 利于爬虫标记 , 正确的标签做正确的事情 , 阅读方便

上一篇 下一篇

猜你喜欢

热点阅读