Chrome

前端开发HTML5——表单标签

天大地大妈咪最大 提交于 2021-02-20 19:48:09
表单简介   Form表单主要用于用户与Web应用程序进行数据的交互,它允许用户将数据发给web应用程序,网页也可以拦截数据的发送以便自己使用。form通常由一到多个表单元素组成,这些表单元素是单行/多行文本框,下拉菜单,按钮,复选框,单选按钮,时间表单元素时 一般要配合label标签,用于描述其目的。其可用属性如下。      action   用于处理表单信息的应用程序的地址。      method    浏览器用来提交表单的HTTP方法。       get 对应于Http协议的GET方法,表单数据被附加在uri上,使用"?"分隔       post 对应于Http协议的POST方法,表单数据包含在HTTP协议的请求报文的体部。     name   设定表单的名称     target   表示浏览器接收到form的提交信息后在哪里显示回应。        _self,_blank,_parent,_top这些值和超链接的相同 表单数据的内容类型   通过enctype属性设定表单数据的内容类型     1. application/x-www-form-urlencoded       在发送前编码所有字符(默认)使用到的编码方式:       1)控件的名称和值都被转义,空白字符使用【+】替换,保留的字符一般都是用来实现特定的目的,例如(: / ? ; @ = &

谷歌最新通知:这些设备将无法再使用新Chrome浏览器!

僤鯓⒐⒋嵵緔 提交于 2021-02-20 16:45:22
据谷歌浏览器团队发布的最新支持文档,Chrome将不再为某些特别老的处理器提供支持。 换言之,就是这些老旧设备将无法再安装使用新的Chrome浏览器。 根据最新文档,这些受影响的老旧设备都没有对SSE3指令集的支持,主要是包含早于Intel Core 2 Duo和AMD Athlon 64处理器的设备。 如果还有用户在用这些上古CPU的话,那么或许现在会是一个更新设备的契机。 据了解,SSE3是Intel基于SSE2发展出来的指令集,主要增强了CPU在处理视频编码、线程同步、复杂算法等操作时的性能表现。 SSE3最早是在Intel于2004年推出基于Prescott核心的Pentium 4 CPU上,而AMD也紧随其后在2005年为Venice以及San Diego核心的Athlon 64新增了SSE3的子集。 现在,从Chrome 89版开始,Chrome将不会在没有SSE3指令集的Windows装置上运行。 如果用户的设备不支持SSE3的话,那么在尝试运行Chromium 89及以上版本时会导致崩溃。 考虑到不支持SSE3指令集的CPU都已经至少有15年的历史,因此谷歌认为受到这个决定影响的用户数量是极少的: “我们的分析表明,目前只有非常少量运行Windows系统的装置所使用的CPU是不支持SSE3的。” 不过,谷歌还是会给这部分用户提明显的警告

HTTP访问控制(CORS)踩坑小记

﹥>﹥吖頭↗ 提交于 2021-02-20 11:53:02
前几天在帮后端排查一个cors的问题的时候发现的一些小坑特此记录 ** cors的本质是出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非使用CORS头文件。 跨域并非一定是浏览器限制了跨站请求,也有可能是跨站请求可以正常发起,但是返回结果被浏览器拦截了。最好的例子是 CSRF 跨站攻击原理,请求是发送到了后端服务器无论是否跨域!注意:有些浏览器不允许从 HTTPS 的域跨域访问 HTTP,比如 Chrome 和 Firefox,这些浏览器在请求还未发出的时候就会拦截请求。 ** 本case场景描述如下: 用户在a.com域名下跨域访问b.com域名下的api接口,使用了XMLHttpRequest的跨域头请求。域名b.com也允许了可以跨域 Access-Control-Allow-Origin 但是很奇怪在访问b.com的接口时有些api能访问成功,有些api访问失败。排查发现访问失败的api都是需要用户的登录态的。但是用户已经在b.com登录过了。把XMLHttpRequest请求换成jsonp请求则都可以请求成功(这好像是废话)。。。由此推测XMLHttpRequest 添加cors头的时候没有把b.com的

Spring | Bean 的生命周期

谁说胖子不能爱 提交于 2021-02-20 08:37:27
作者:sunshujie1990 www.jianshu.com/p/1dec08d290c1 S pring Bean的生命周期是Spring面试热点问题。 这个问题即考察对Spring的微观了解,又考察对Spring的宏观认识,想要答好并不容易! 本文希望能够从源码角度入手,帮助面试者彻底搞定Spring Bean的生命周期。 只有四个! 是的,Spring Bean的生命周期只有这四个阶段。把这四个阶段和每个阶段对应的扩展点糅合在一起虽然没有问题,但是这样非常凌乱,难以记忆。要彻底搞清楚Spring的生命周期,首先要把这四个阶段牢牢记住。实例化和属性赋值对应构造方法和setter方法的注入,初始化和销毁是用户能自定义扩展的两个阶段。在这四步之间穿插的各种扩展点,稍后会讲。 实例化 Instantiation 属性赋值 Populate 初始化 Initialization 销毁 Destruction 实例化 -> 属性赋值 -> 初始化 -> 销毁 主要逻辑都在doCreate()方法中,逻辑很清晰,就是顺序调用以下三个方法,这三个方法与三个生命周期阶段一一对应,非常重要,在后续扩展接口分析中也会涉及。 createBeanInstance() -> 实例化 populateBean() -> 属性赋值 initializeBean() -> 初始化 源码如下,能证明实例化

Android调试移动端webview

别来无恙 提交于 2021-02-20 05:43:42
尝试了各种Mac版本的安卓模拟器,包括Android Studio、Genymotion以及国内的网易MuMu、夜神、蓝叠、腾讯手游助手,做的最好的是Android Studio,最难上手的也是Android Studio。 Android Studio有两种架构类型的镜像可选,分别是x86和arm,安装arm架构的镜像,非常卡,没法用,x86的镜像很流畅,只能用来调试基于x86架构的App 其它几个从安装到使用都非常简单,国内的几个,稳定性都比较差,全部都存在启动时进度卡在99%的问题,相对稳定的是网易MuMu,至于Genymotion,比较卡顿,安装App之后无法启动,因此,下面的教程仅适用网易MuMu 一、模拟器调试 1、安装模拟器: 下载网易MuMu模拟器 并安装,有window版和Mac版,本文针对Mac版 2、安装App:启动模拟器,点击底部APK安装,选择Android版App,等待安装完成 3、安装adb:adb全称 Andorid Debug Bridge ,中文名安卓调试桥 brew cask install android-platform-tools    安装完成后,打开模拟器内的App,然后在开发机上执行以下命令,查看当前已连接的模拟器/设备的列表 adb devices    如果列表是空,执行以下命令再试 adb kill-server && adb

Dynamics 365 解决下载文件后文件名带单引号问题

给你一囗甜甜゛ 提交于 2021-02-20 04:59:50
  从chrome的某个版本开始,下载的文件像下面红框里这样,在文件名上带单引号了,一般的做法是重命名文件,但每次这么搞也很麻烦   网上找到的资料,解决方案是安装插件,在Chrome应用商店有款插件叫做Dynamics CRM File Download Fix,可以解决这个问题,但是让用户去安装插件也不太现实。 还有另外一种解决方案,通过修改配置文件,也可以解决这个问题,一劳永逸。 解决方案: 在crm网站安装目录web.config文件中,在 configuration -> location -> system.webserver -> rewrite 下,替换outboundRules节点: <outboundRules> <rule name="Content-Disposition filename" preCondition="IsSingleQuoteFileName"> <match serverVariable="RESPONSE_Content_Disposition" pattern="(.* filename=)('([^'].+)')(.*)" /> <action type="Rewrite" value="{R:1}"{R:3}"{R:4}" /> </rule> <preConditions> <preCondition name=

干货:熟悉面试中常见的的 web 安全问题

强颜欢笑 提交于 2021-02-20 01:10:22
背景 之前出去面试的时候, 经常会被问到一些 安全方面 的问题。 安全涉及的领域很大, 我也仅仅是了解一些皮毛, 每次面试前都要找资料复习, 很麻烦。 所以我就根据之前搜集的一些资料和面试的经验,系统的梳理了一下,希望对大家有所帮助。 「 正文 」 首先简单介绍 几种常见的攻击方式 : SQL注入 XSS CSRF 点击劫持 中间人攻击 1 SQL 注入 这是一种比较简单的攻击方式。 如果后台人员使用用户输入的数据来 组装SQL查询语句 的时候不做防范, 遇到一些 恶意的输入 , 最后生成的SQL就会有问题。 举个例子 比如地址栏输入的是: articlrs/index.php? id = 1 发送一个 get 请求, 调用的查询语句是: sql = " SELECT * FROM articles WHERE id = ", $id 正常情况下, 返回 id = 1 的文章。 如果攻击者想获得所有的文章,语句就可以改成: articlrs/index.php? id = -1 OR 1 = 1 这样就可以了, 为什么呢? 这是因为,id = -1 永远是 false,1=1 永远是true,所有整个where语句永远是ture. 所以 where 条件相当于没有加where条件,那么查询的结果相当于整张表的内容,攻击者就达到了目的。 现在的系统一般都会加入 过滤 和 验证 机制,

postman设置token等关联参数

别说谁变了你拦得住时间么 提交于 2021-02-19 20:54:34
登陆时登录成功后服务器会返回一个token,这个token作为第二步骤的入参;第二个步骤请求成功后服务器会返回一个新token,然后这个token作为第三步骤的入参!如此一来的话,要用postman做接口测试,那么就要解决token这个参数的关联问题: 第一,首先将这三个要测试的接口写成collection: 第二,要设置postman的环境,设置名称,url,以及token(只需要设置key就行),如下图: 第三步,在Postman软件的Tests中写以下代码,设置环境变量 第四步,修改第二以及第三个接口的入参的tokend值,格式用双花括号:{{token}} 格式 到此就设置完成了,我们选择登陆接口点击send,此时token就会显示在环境变量中了,这时第二个接口就可以执行了;然后再执行第三个接口,此时这个流程就可以跑通了! 总结:其实像这样的1步骤产生token,2步骤关联1步骤的token,3步骤关联2步骤的token,4步骤关联3步骤的token ,这种情况我也是第一次接触,这种情况与我司的项目不同,我司项目中只要token有效期内就行,不会存在步骤间这种紧密的依赖关系。 如果把这种项目的接口写成自动化脚本的话也比较冗长,因为我要在一个py中同时从步骤1写到步骤4.这样代码比较长了,代码如下: #coding:utf-8 import requests,unittest

certificate unknown(46)

寵の児 提交于 2021-02-19 04:33:10
因为腾讯云的网站备案迟迟没有批下来,因此使用了朋友在阿里云的域名yk,我则申请了一台阿里云服务器,并将域名解析映射至该服务器。SSL证书则是在腾讯云上申请的,使用了Apache文件夹中的文件,放置在cowboy的priv/ssl目录下,1_root_bundle为根证书,2_yk.crt为网站证书,3_yk.key为密钥。一切布置妥当后,在PC的chrome、android的chrome、苹果手机的微信等环境中均可以正常访问,但是在android的微信中访问时服务器报如下错误: client alert Fatal: unknown certificate(46) RFC中的解释是: certificate_unknown Some other (unspecified) issue arose in processing the certificate, rendering it unacceptable. 搜索到一些信息,如: https://cweiske.de/tagebuch/https-client-cert-unknown.htm 也使用wireshark抓包排查了流程,但是由于对SSL不是非常了解,始终没有找到进一步的原因和方向。后来向一些朋友请教,整理了思路。对于这种问题,首先要到SSL测试网站上测试具体的问题: https://www.myssl.cn

动态加载js和css

时光总嘲笑我的痴心妄想 提交于 2021-02-18 14:13:29
一、动态加载CSS 动态创建css样式有两种方式: 1、动态插入css外部文件的方法: function loadStyle(url){   var link = document.createElement('link'); link.type = 'text/css'; link.rel = 'stylesheet'; link.href = url; var head = document.getElementsByTagName('head')[0]; head.appendChild(link); } loadStyle('test.css'); 2、动态加载css代码片段 function loadCssCode(code){ var style = document.createElement('style'); style.type = 'text/css'; style.rel = 'stylesheet'; try{ //for Chrome Firefox Opera Safari style .appendChild(document.createTextNode(code)); }catch(ex){ //for IE style.styleSheet.cssText = code; } var head = document