ajax 和 http

ajax(异步 JavaScript 和 XML)是什么?

我们不可能一味的编写静态页面,有时需要动态获取数据,而Ajax就可以在js代码中动态地获取数据,

http及https是什么?

http是一种网络传输协议 ,超文本传输协议,建立在tcp之上,定义了发送接收传输的信息规则,

https=http+ssl(加密处理)

ajax和http的关系?

用ajax或者ajax封装的东西来发送http请求 

http特点?

短链接:每次处理一个请求,链接后就断开

无状态:对处理的事务没有记忆能力

http媒体独立:只要两端知道处理内容格式 ,使用适合的 MIME-type 内容类型。啥都能传。

 一个非常基本的xml请求

 注意,这里有很多可以做特殊处理,比如说,请求结束,成功,超时,出错,还可以设置请求头,请求数据类型

把这个请求丰富功能,封装之后就是ajax,除了用这个还刻有jquary封装ajax

xml之后是fetch但现在也很少人用它返回的是promiss对象

 

axios这个是非常重要的,现在都用

1.ajax是基于xhr+request封装的ajax库

2.浏览器端和node端都可以使用

3.支持拦截器

4.支持请求取消

axios可以支持手写发送请求,但大部分时间我们用脚手架工具安装axios所以主要学在工具里使用 

- axios.get(url[, config])
- axios.post(url[, data[, config]])
- axios.put(url[, data[, config]])
- axios.delete(url[, config])

**config参数对象中常用的属性:**

- `url`:必需的,是用于请求的服务器 URL,类型为 字符串
- `method`:可选的,是创建请求时使用的方法,类型为 字符串,默认值为: 'get'
- `headers`:可选的,是即将被发送的自定义请求头,类型为 Object对象,例如:`{'Content-Type': 'Application/json'}`
- `data`:可选的,是作为请求主体被发送的数据,只适用于这些请求方法 'PUT', 'POST', 和 'PATCH'。支持常见的数据类型:plain object、FormData、URLSearchParams、File
- `params`:可选的,是即将与请求一起发送的 URL 参数,类型必须是一个无格式对象(plain object)或 URLSearchParams 对象
- `timeout`:可选的,指定请求超时的毫秒数(0 表示无超时时间),默认值为 1000。如果请求超过 `timeout` 的时间,请求将被中断。
- `responseType`: 可选的,表示服务器响应的数据类型,可以是 'json', 'text' 等,默认值为 'json'

使用 `then(response => {})` 返回接收服务端响应,响应信息对象response包含以下信息 :
 

在工具里使用(vue-cli)

1.安装axios有时需要去序列化也许安装qs(把一个json对象转为?&那种形式

2.在主函数中导入,用脚手架安装默认在module中直接./导入即可,其他插件也一样

3.导入

        import axios from 'axios'

        axios.defaults.basseURL=______

        vue.prototype.$axios=axios

        挂在到vue原型上调用方便如axios.get等,文章里有原型知识

4.可以设置axios拦截器

        axios.interceptors.response.use(function(....

        axios.interceptors.request.use(function(....

http状态码

- 200 - 请求成功
- 301 - 资源(网页等)被永久转移到其它URL
- 404 - 请求的资源(网页等)不存在
- 500 - 内部服务器错误
 

 http请求与相应格式

跨域(浏览器阻止的跨域,服务器不会跨域)

### 4.2 跨域解决方案

实际开发中,跨域发送请求是避免不了的。比如,

1. 我们在公司开发一套全新的前端项目,需要部署在单独的服务器上,
2. 而提供数据的后台接口项目也是独立部署在一个服务器上,
3. 此时,两台服务器部署项目时就会造成域名不一致的问题
4. 当前端向后台发起HTTP请求时,就会因为跨域请求而被浏览器拒绝了

既然,避免不了就要想办法绕开浏览器的同源策略,去完成跨域请求。

这里列举常见的一些解决方案:

1. CORS:跨域资源共享。就是在后台服务器端配置允许某个域名下的请求。


2. 中间服务器代理,衍生的反向代理:分为正向代理与反向代理,通常使用反向代理,如proxy代理

        这个比较常用下面放个例子吧

        用vue-cli为例子

 proxy中

‘/api/v1’为这个路径重写跨域的 target(为跨域的域名)

changeOrigin 开启跨域

pathreWrite{

‘’api‘’:’‘/’‘}


3. JSONP:就是动态生成一个script,由于script的src不受同源策略的限制,就可以去请求不同域的接口

1.不支持post请求

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

河马河马大河马

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值