zoukankan      html  css  js  c++  java
  • ajax的相关知识总结

    一、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。

  • 相关阅读:
    jS Ajax 上传文件报错"Uncaught TypeError: Illegal invocation"
    layer实现关闭弹出层刷新父界面功能详解
    PHP开发APP接口简单签名全过程(二)实际测试
    PHP开发APP接口简单签名全过程(一)
    Laravel 避免 Trying to get property of non-object 错误的六种方法 [新增第六种 data_get]
    在PHP代码中将HTML代码原样输出的方式
    在使用 Laravel Eloquent 模型时,我们要判断取出的结果集是否为空,但我们发现直接使用 is_null 或 empty是无法判段它结果集是否为空的!!!
    使用layer的iframe层提交表单后,需要关闭当前的iframe层,然后刷新父页面的方法
    laravel中如何实现验证码验证及使用
    递归思想的由来
  • 原文地址:https://www.cnblogs.com/lanhuo666/p/10499575.html
Copyright © 2011-2022 走看看