一、ajax的工作原理

a.创建XMLHttpRequeat对象

var xmlhttp;
if (window.XMLHttpRequest)
{
// IE7+, Firefox, Chrome, Opera, Safari 浏览器执行代码
xmlhttp=new XMLHttpRequest();
}
else
{
// IE6, IE5 浏览器执行代码
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}

b.向服务器发送请求

使用XMLHttpRequest 对象的 open() 和 send() 方法

如果需要像 HTML 表单那样 POST 数据,请使用 setRequestHeader() 来添加 HTTP 头。然后在 send() 方法中规定您希望发送的数据。

注意:

当使用 async=true 时,请规定在响应处于 onreadystatechange 事件中的就绪状态时执行的函数

当使用 async=false 时,请不要编写 onreadystatechange 函数 - 把代码放到 send() 语句后面即可

c.onreadystatechange事件

当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。readyState 属性存有 XMLHttpRequest 的状态信息。

d.服务器响应

如需获得来自服务器的响应,请使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。

二、原生js实现Ajax方法

var Ajax={
get: function(url, fn) {
// XMLHttpRequest对象用于在后台与服务器交换数据
var xhr = new XMLHttpRequest();
xhr.open('GET', url, true);
xhr.onreadystatechange = function() {
// readyState == 4说明请求已完成
if (xhr.readyState == 4 && xhr.status == 200 || xhr.status == 304) {
// 从服务器获得数据
fn.call(this, xhr.responseText);
}
};
xhr.send();
},
// datat应为'a=a1&b=b1'这种字符串格式,在jq里如果data为对象会自动将对象转成这种字符串格式
post: function (url, data, fn) {
var xhr = new XMLHttpRequest();
xhr.open("POST", url, true);
// 添加http头,发送信息至服务器时内容编码类型
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && (xhr.status == 200 || xhr.status == 304)) {
fn.call(this, xhr.responseText);
}
};
xhr.send(data);
}
}

三、jquery实现Ajax方法:

$.ajax({
url: ,
type: '',
dataType: '',
data: { },
success: function(){ },
error: function(){ }
})

type:类型,get或者post

url:发送请求的地址

data:是一个对象,连同请求发送到服务器的数据

dataType:预期服务器返回的数据类型

success:请求成功后的回调函数

error:请求失败时调用此函数

四、http中get和post的区别

定义:

GET:从指定的资源请求数据

POST:向指定的资源提交要被处理的数据

其它HTTP请求方法:

五、http和https有什么区别

a.HTTP(Hypertext Transfer Protocol)超文本传输协议

缺省工作在TCP协议80端口

优点:使浏览器更加高效,使网络传输减少。

缺点:HTTP协议采用明文传输信息,存在信息窃听、信息篡改和信息劫持的风险。

b.HTTPS(Secure
Hypertext Transfer Protocol)
安全超文本传输协议

缺省工作在TCP协议443端口

一般的工作流程如下:

1.完成TCP三次握手

2.客户端验证服务器数字证书,通过,进入步骤3

3.DH算法协商对称加密算法密钥、hash算法的密钥

4.SSL安全加密隧道协商完成

5.网页以加密的方式传输,用协商的对称加密算法和密钥,保证数据机密性;用协商的hash算法进行数据完整性保护,保证数据不被篡改

如果HTTPS是网银服务,以上SSL安全隧道成功建立后才会要求用户输入账号信息,账号信息是在安全隧道传输的,所以不会泄密。

六、TCP的三次握手和四次握手

TCP三次握手是为了建立可靠连接,存在一次请求,两次响应

TCP四次握手是为了关闭连接,存在两次请求,两次响应

七、OSI七层模型和TCP/IP四层模型

OSI七层模型:物理层,数据链路层,网络层,传输层,会话层,表示层,应用层

物理层:单位bit,字节byte,同轴电缆,光纤,二进制,比特流
数据链路层:帧,16进制,0-9,A-FMac地址->全网唯一性     mac地址过滤
网络层:数据包,IP地址,十进制
传输层:数据段,TCP,UDP
会话层:建立维护管理会话链接
表示层:加密,解密,数据格式化
应用层是最接近用户的一层  http协议
 
 

TCP/IP四层模型:网络接口层,网络层,传输层,应用层

八、XSS和CSRF攻击

XSS跨站脚本攻击。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页时,嵌入的script代码会被执行,达到恶意攻击用户的目的
CSRF:跨站脚本伪造,对网站的恶意利用。要完成一次CSRF攻击,必须依次完成两个步骤1登录授信网站A,并在本地生成Cookie   2在不登出A的情况下,访问危险网站B
 
区别:
XSS只要指向客户端,CSRF针对服务器;CSRF危害程度更高;
XSS利用合法用户获取其信息,CSRF伪造合法用户发起请求

防御手段

对于CSRF

1.尽量使用POST,限制GET

2.加验证码

3.Anti CSRF Token

过程:

a. 用户访问某个表单页面。

b. 服务端生成一个Token,放在用户的Session中,或者浏览器的Cookie中。

c. 在页面表单附带上Token参数。

d. 用户提交请求后, 服务端验证表单中的Token是否与用户Session(或Cookies)中的Token一致,一致为合法请求,不是则非法请求。

这个Token的值必须是随机的,不可预测的。由于Token的存在,攻击者无法再构造一个带有合法Token的请求实施CSRF攻击。另外使用Token时应注意Token的保密性,尽量把敏感操作由GET改为POST,以form或AJAX形式提交,避免Token泄露。

对于XSS

1.使用XSS Filter

针对用户提交的数据进行有效验证,只接受规定长度或内容的提交,过滤掉其他输入内容

2.html 实体

在变量输出到html页面时,可以使用编码或转义的方式来防御XSS攻击

HtmlEncode:将字符转成HTMLEntities,对应的标准是ISO-8859-1。

3.Http Only cookie

浏览器禁止页面的JS访问带有HttpOnly属性的Cookie。

ajax的相关知识总结的更多相关文章

  1. Python全栈开发之18、cookies、session和ajax等相关知识

    一.cookies 本质为在浏览器端保存的键值对,由服务端写在浏览器端,以后每次请求的时候,浏览器都携带着cookie来访问,cookies的使用之处非常多,比如用户验证,登陆界面,右侧菜单隐藏,控制 ...

  2. AJAX跨域调用相关知识-CORS和JSONP(引)

    AJAX跨域调用相关知识-CORS和JSONP 1.什么是跨域 跨域问题产生的原因,是由于浏览器的安全机制,JS只能访问与所在页面同一个域(相同协议.域名.端口)的内容. 但是我们项目开发过程中,经常 ...

  3. 【转载】前端面试“http全过程”将所有HTTP相关知识抛出来了...

    原文:前端面试“http全过程”将所有HTTP相关知识抛出来了... 来一篇串通,一个http全过程的问题,把所有HTTP相关知识点都带过一遍 http全过程 输入域名(url)-->DNS映射 ...

  4. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  5. 浅谈C#中的 async await 以及对线程相关知识的复习

    C#5.0以后新增了一个语法糖,那就是异步方法async await,之前对线程,进程方面的知识有过较为深入的学习,大概知道这个概念,我的项目中实际用到C#异步编程的场景比较少,就算要用到一般也感觉T ...

  6. web聊天相关知识

    http相关知识 http是无状态,请求,响应模式的通信模式,就是用户每次通过浏览器点击一下页面,都需要重新与web服务器建立一下连接,且发送自己的 session id 给服务器端以使服务器端验证此 ...

  7. web跨域及cookie相关知识总结

    原文:web跨域及cookie相关知识总结   之前对于跨域相关的知识一致都很零碎,正好现在的代码中用到了跨域相关的,现在来对这些知识做一个汇总整理,方便自己查看,说不定也可能对你有所帮助. 本篇主要 ...

  8. 【Python五篇慢慢弹(5)】类的继承案例解析,python相关知识延伸

    类的继承案例解析,python相关知识延伸 作者:白宁超 2016年10月10日22:36:57 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给 ...

  9. 移动WEB像素相关知识

    了解移动web像素的知识,主要是为了切图时心中有数.本文主要围绕一个问题:怎样根据设备厂商提供的屏幕尺寸和物理像素得到我们切图需要的逻辑像素?围绕这个问题以iphone5为例讲解涉及到的web像素相关 ...

随机推荐

  1. centos无法用password登录,只能用public key的解决办法

    如上图只能用public key登录,只是我在17年申请的阿里云免费体验半年的服务器上遇到的, 那么我们用阿里云后台的远程连接按钮进入服务器,进入后 就看/etc/ssh/sshd_config文件配 ...

  2. photoshopcs6破解补丁用来干嘛的

    photoshopcs6破解补丁为 Adobe CS6 系列软件通用破解补丁,亲测可用,终于能用了不再出现那个烦人的购买页面了,cs6破解补丁解压后得到32和64两个文件夹,根据自己的系统类型选择,6 ...

  3. ZT sem_init sem_wait sem_post sem_destroy

    sem_init() 2009-06-26 16:43:11|  分类: linux |字号 订阅       信号量的数据类型为结构sem_t,它本质上是一个长整型的数.函数sem_init()用来 ...

  4. 在switch中的case语句中声明变量编译出错的解决方案

    在switch中的case语句中声明变量编译的问题 先来看段代码,别管什么意思: : , j = ; ; i < ; i++) recive_phone[i] = msgbuf.text[i]; ...

  5. jq实现随机显示部分图片在页面上(兼容IE5)

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...

  6. Allocate exception for servlet ValidateUsernameServlet 异常

    如果eclipse无法对类文件进行编译那么运行时就会发生 Allocate exception for servlet ValidateUsernameServlet 异常,说找不到类.

  7. 【原创】多字节版本下MFC控件处理字符集的BUG

    工程项目属性: 字符集:多字节 stdafx.h文件中添加: #pragma comment(linker,"/manifestdependency:\"type='win32' ...

  8. 使用Timer组件_实现定时更改窗体颜色

    1 向窗体拖入Timer组件 2 更改其Enable属性为true 3 其interval属性为300 4 在Tick事件中写入随机变色代码 private void timer1_Tick(obje ...

  9. JDK自带监控工具

    该篇文章,主要是工具普及,告诉大家有这么两款工具,可帮助我们进行JVM调优,及时看到JVM的变化. 不过建议,最好还是对于JVM相关的知识点,有一定的基础和熟悉. JDK自带jconsole.exe和 ...

  10. 【绝迹篇】RSA加密算法(私钥加签公钥验签)

    对于上上篇博客中我讲的一个故事,本文引用: https://www.cnblogs.com/ButterflyEffect/p/9851403.html 故事中提到的关于加密会出现,私钥加密,公钥解密 ...