大家好,又见面了,我是你们的朋友全栈君。
1,Ajax 是什么? 如何创建一个Ajax?
ajax的全称:Asynchronous Javascript And XML。异步传输+js+xml。
所谓异步,在这里简单地解释就是:向服务器发送请求的时候,我们不必等待结果,而是可以同时做其他的事情,等到有了结果它自己会根据设定进行后续操作,与此同时,页面是不会发生整页刷新的,提高了用户体验
(1)创建XMLHttpRequest
对象,也就是创建一个异步调用对象
(2)创建一个新的HTTP
请求,并指定该HTTP
请求的方法、URL
及验证信息
(3)设置响应HTTP
请求状态变化的函数
(4)发送HTTP
请求
(5)获取异步调用返回的数据
(6)使用JavaScript
和DOM
实现局部刷新
ajax是一种创建交互式网页的计算
2,同步和异步的区别? 同步:浏览器访问服务器请求,用户看得到页面刷新,重新发请求,等请求完,页面刷新,新内容出现,用户看到新内容,进行下一步操作。 异步:浏览器访问服务器请求,用户正常操作,浏览器后端进行请求。等请求完,页面不刷新,新内容也会出现,用户看到新内容
3,如何解决跨域问题?
jsonp、 iframe、window.name、window.postMessage
、服务器上设置代理页面
4,http状态码有那些?分别代表是什么意思? 100 Continue 继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息 200 OK 正常返回信息 201 Created 请求成功并且服务器创建了新的资源 202 Accepted 服务器已接受请求,但尚未处理 301 Moved Permanently 请求的网页已永久移动到新位置。 302 Found 临时性重定向。 303 See Other 临时性重定向,且总是使用 GET 请求新的 URI。 304 Not Modified 自从上次请求后,请求的网页未修改过。 400 Bad Request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。 401 Unauthorized 请求未授权。 403 Forbidden 禁止访问。 404 Not Found 找不到如何与 URI 相匹配的资源。 500 Internal Server Error 最常见的服务器端错误。 503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
5,一个页面从输入 URL 到页面加载显示完成,这个过程中都发生了什么?
1、浏览器会开启一个线程来处理这个请求,对 URL 分析判断如果是 http
协议就按照 Web 方式来处理;
2、调用浏览器内核中的对应方法,比如 WebView
中的 loadUrl
方法;
3、通过DNS
解析获取网址的IP地址,设置 UA 等信息发出第二个GET请求;
4、进行HTTP
协议会话,客户端发送报头(请求报头);
5、进入到web服务器上的 Web Server,如 Apache、Tomcat、Node.JS
等服务器;
6、进入部署好的后端应用,如 PHP、Java、JavaScript、Python
等,找到对应的请求处理;
7、处理结束回馈报头,此处如果浏览器访问过,缓存上有对应资源,会与服务器最后修改时间对比,一致则返回304;
8、浏览器开始下载html
文档(响应报头,状态码200),同时使用缓存;
9、文档树建立,根据标记请求所需指定MIME类型的文件(比如css、js
),同时设置了cookie
;
10、页面开始渲染DOM,JS根据DOM API操作DOM,执行事件绑定等,页面显示完成。
8,请解释 JSONP 的工作原理,以及它为什么不是真正的 AJAX。
jsonp
的工作原理是,动态的创建了一个全局方法,并且动态生成script
标签,将script标签的src
属性变为(接口地址?callback
=动态生成方法的方法名)请求数据,而后台则需要将接收到的callback
值与数据一同返回,呈现出执行js
方法的语句(方法名(数据)),其实就是在请求回来的数据中是执行请求是动态生成的js
方法,生成了假象的ajax
,所以jsonp
只能做get类型请求
9,请解释一下 JavaScript 的同源策略。
同源策略是客户端脚本(尤其是Javascript
)的重要的安全度量标准。它最早出自Netscape Navigator2.0,其目的是防止某个文档或脚本从多个不同源装载。
它的精髓很简单:它认为自任何站点装载的信赖内容是不安全的。当被浏览器半信半疑的脚本运行在沙箱时,它们应该只被允许访问来自同一站点的资源,而不是那些来自其它站点可能怀有恶意的资源。
这里的同源指的是:同协议,同域名和同端口
10,为什么要有同源限制?
我们举例说明:比如一个黑客程序,他利用IFrame
把真正的银行登录页面嵌到他的页面上,当你使用真实的用户名,密码登录时,他的页面就可以通过Javascript
读取到你的表单中input
中的内容,这样用户名,密码就轻松到手了。
11,创建ajax过程
(1)创建XMLHttpRequest
对象,也就是创建一个异步调用对象.
(2)创建一个新的HTTP
请求,并指定该HTTP
请求的方法、URL
及验证信息.
(3)设置响应HTTP
请求状态变化的函数.
(4)发送HTTP
请求.
(5)获取异步调用返回的数据.
(6)使用JavaScript
和DOM
实现局部刷新.
var xmlHttp = new XMLHttpRequest();
xmlHttp.open('GET','demo.php','true');
xmlHttp.send()
xmlHttp.onreadystatechange = function(){
if(xmlHttp.readyState === 4 & xmlHttp.status === 200){
}
}
11、XSS与CSRF有什么区别吗? XSS是获取信息,不需要提前知道其他用户页面的代码和数据包。CSRF是代替用户完成指定的动作,需要知道其他用户页面的代码和数据包。 要完成一次CSRF攻击,受害者必须依次完成两个步骤: 登录受信任网站A,并在本地生成Cookie。 在不登出A的情况下,访问危险网站B。 CSRF的防御 服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数。 通过验证码的方法
12、HTTP和HTTPS
1、https
协议需要到ca申请证书,一般免费证书较少,因而需要一定费用。
2、http
是超文本传输协议,信息是明文传输,https
则是具有安全性的ssl
加密传输协议。
3、http
和https
使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
4、http
的连接很简单,是无状态的;HTTPS
协议是由SSL+HTTP
协议构建的可进行加密传输、身份认证的网络协议,比http
协议安全。
13、为什么HTTPS安全
https
之所以比http
安全,是因为他利用ssl/tls
协议传输。它包含证书,卸载,流量转发,负载均衡,页面适配,浏览器适配,refer
传递等。保障了传输过程的安全性
14、GET和POST的区别,何时使用POST?
GET
:一般用于信息获取,使用URL传递参数,对所发送信息的数量也有限制,一般在2000个字符
POST
:一般用于修改服务器上的资源,对所发送的信息没有限制。
GET
方式需要使用Request.QueryString
来取得变量的值,而POST
方式通过Request.Form
来获取变量的值,也就是说Get
是通过地址栏来传值,而Post
是通过提交表单来传值。
然而,在以下情况中,请使用 POST
请求:
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST
没有数据量限制)
发送包含未知字符的用户输入时,POST
比 GET
更稳定也更可靠
15、前端需要注意哪些SEO
合理的title、description、keywords
:搜索对着三项的权重逐个减小,title
值强调重点即可,重要关键词出现不要超过2次,而且要靠前,不同页面title
要有所不同;description
把页面内容高度概括,长度合适,不可 过分堆砌关键词,不同页面description
有所不同;keywords
列举出重要关键词即可
语义化的HTML
代码,符合W3C规范:语义化代码让搜索引擎容易理解网页
重要内容HTML
代码放在最前:搜索引擎抓取HTML顺序是从上到下,有的搜索引擎对抓取长度有限制,保证重要内容一定会被抓取
重要内容不要用js输出:爬虫不会执行js
获取内容
少用iframe
:搜索引擎不会抓取iframe
中的内容
非装饰性图片必须加alt
提高网站速度:网站速度是搜索引擎排序的一个重要指标
16、什么是Ajax和JSON,它们的优缺点
Ajax
是异步JavaScript
和XML
,用于在Web页面中实现异步数据交互。
优点:
可以使得页面不重载全部内容的情况下加载局部内容,降低数据传输量
避免用户不断刷新或者跳转页面,提高用户体验
缺点:
对搜索引擎不友好(
要实现ajax
下的前后退功能成本较大
可能造成请求数的增加
跨域问题限制
JSON
是一种轻量级的数据交换格式,ECMA的一个子集
优点:轻量级、易于人的阅读和编写,便于机器(JavaScript)解析,支持复合数据类型(数组、对象、字符串、数字)
17、Cookie和localstorage、session storage的区别
Cookie
技术浏览器兼容性好,但操作比较复杂,需要程序员自己封装,源生的Cookie接口不友好, 存储的内容较小, cookie
的数据会随着ajax
的请求发送到服务端,一般情况主要用在用户登录的时候我们可以通过在 Cookie
中存入一段辨别用户身份的数据,用于后台判断。
WebStorage
则不能超过8MB,操作简单;可以代替一些cookie
的工作,一般主要是用于存储一些本地数据,购物车数据之类的在安全方面的话,都不安全,一般就是对数据进行一些简单的加密,如base64
编码,加密约定之类的东西
localstorage
、sessionstorage
一个是长期存储,一个是会话存储
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/175599.html原文链接:https://javaforall.cn