第五天学习后端——复习跨域

88 阅读2分钟

1.AJAX的原生语法:

原理:

AJAX是在不刷新页面的情况下去请求数据 然后把这个数据 局部刷新的页面上(DOM) 的技术

原生代码的大致步骤:

1.创建ajax对象:兼容性写法 xhr XMLHttpRequest 如果低版本的IE浏览器 就是ActivXObject()

2.配置网络连接 open 请求方式 目标网址 是否异步

3.配置其他选项:xhr 还有很多方法和属性 可以配置 有默认配置

4.发送请求 send

5.监听网络请求状态

6.判断如果网络状态为4 也就是后端返回数据包了 如果数据包中状态码为200说明数据正确

7.处理数据 操作页面

2.跨域

如果用户访问我们的A服务器的网页,网页内部的AJAX 去请求B服务器的数据接口

就算是B服务器把json数据发送给了用户的浏览器,但是浏览器因为同源策略的原因 会阻止数据使用

这种现象就是跨域了,具体的跨域的两个服务器的标识是: 协议 ip port

2.CORS的原理

在实际生产或者项目的开发阶段 有时候真的需要跨域访问资源

可以在后端发送数据包时 在数据包的头部配置 这个数据包被跨域请求时的 跨域资源共享 白名单

也就是 res.setHeader("Access-Contrl-Allow-Origin","具体的白名单域,可以配置*")

3.JSONP的原理

前端提前设置一个函数假设函数名为fn1,然后把fn1这个字符串用script标签的src属性发送给后端

后端解析出参数querystring中的fn1字符串 把后端的json数据 拼接成 'fn1(json数据)' 这个字符串发送给前端

前端因为是用的script请求的资源因此:不会有跨域限制,并且会把得到的资源用v8去运行 然后就会执行fn1这个函数

提前设定好的函数fn1就可以接受到网络请的数据 ,这种利用了script去跨域请求的设计就是JSONP

4.Proxy的原理

在开发阶段 最常用的手段,比如Vue,React,等前端框架中

常常有一个自己的开发服务器

如果用户访问我们的A服务器的网页,网页内部的AJAX 去请求A服务器的数据接口,是不会跨域的

然后A服务器去请求B服务器的数据,再把返回给A服务器的数据 返回的用户

A服务器就是一个代理服务器