前端面试题-网络请求-http请求方式-http状态码-url地址到浏览器渲染过程-跨域-请求测试工具-http和https

前端面试题-网络请求-http请求方式-http状态码-url地址到浏览器渲染过程-跨域-请求测试工具

http请求方式

方式 描述
get 发送一个请求来取得服务器上的某一资源
post 向url指定的资源提交数据或者附加新数据
put 跟post方法很像,也是向服务器提交数据。但是它们之间有不同,put指定了资源在服务器上的位置.post却没有
head 只请求页面的首部
delete 删除服务器上的某种资源
options 用于获取当前url所支持的方法。如果请求成功,会有一个alow的的头包含类似'post.get'这样的信息

常用方式get请求和post请求的区别

get:从指定的资源请求提交数据,用于获取数据

post:向指定的资源提交要被处理的数据,用于将数据发送给服务器

get post
安全性 安全性较差不能用来传递敏感参数,因为它的参数是通过url传递的 相对安全 参数放在request中
能否被缓存 会被缓存 不会缓存
收藏 可以被收藏为书签 不可以被收藏为书签
历史记录 保留在浏览器的历史记录中 不会保留在浏览器的历史记录中
长度 有请求长度限制 对数据长度没有要求
tcp数据包 产生1tcp数据包 产生2个tcp数据包

get和post本身都是tcp的连接,并无差别。但是由于HTTP规定和浏览器/服务器的限制,导致它们在应用过程中体现出一些不同

http的状态码有哪些?分别代表什么意思?

状态码 描述
1xx:信息状态码
100 contiune 继续 post 已发送了http head 之后服务端将返回此信息,表示确认之后发送具体参数信息
2xx:成功状态码
200 ok 正常返回信息
201 created 请求成功并在服务器创建了新的资源
202 accepted 服务器已经接收请求但是尚未处理
3xx:重定向
301 moved permanently 请求的网页已经移动到了新的位置
302 found 临时重定向
303 see other 临时重定向,且总是使用get请求新的url
304 not modified 自从上次请求后,请求的网页没有修改过
4xx客户端错误
400 bad request 服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求
401 unauthorized 请求未授权
403 forbidden 禁止访问
404 not found 找不到与URL相匹配的资源
5xx服务器错误
500 internal server error 最常见的服务端错误
503 service unavailable 服务端暂时无法处理请求

从输入一个url地址到浏览器完成渲染的整个过程

1.浏览器地址输入URL并回车

2.浏览器查找当前URL是否存在缓存,并比较缓存是否过期

3.DNS解析URL对应的IP

4.根据IP建立TCP连接(三次握手)

5.发生http请求

6.服务器处理请求,浏览器接受HTTP响应

7.浏览器解析并渲染页面

9.关闭Tcp连接(四次握手)

解决跨域的三种方式

1.CROS 服务端 设置请求头

javascript 复制代码
//设置响应头 设置允许跨域
  response.setHeader('Access-Control-Allow-Origin','*')

2.利用script标签支持跨域的属性 此方法需要服务端配合指定回调

javascript 复制代码
<script>
    var body_=document.getElementsByTagName('body')[0];
    function search_(){
        var value_=q.value;
        if(value_.trim()==''){
            return;
        }
        var script_=document.createElement('script');//利用script标签之处跨域的属性
        script_.src='http://suggest.taobao.com/sug?code=utf-8&q=' + value_ + '&callback=cb';
        body_.appendChild(script_);
        console.log(script_);
    }
    function cb(res) {//回调函数
        console.log(res);
        // 数据渲染到页面
        var lis = ''
        for (var i = 0; i < res.result.length; i++) {
          lis += '<li>' + res.result[i][0] + '</li>'
        }
        console.log(lis)
        list.innerHTML = lis
      } 
</script>

3.代理服务器 通过vue-cli实现 配置vue.config.js文件

javascript 复制代码
const { defineConfig } = require('@vue/cli-service')
module.exports = defineConfig({
  transpileDependencies: true,
  //开启代理服务器方式一方便简洁
  //缺陷一次只能配置一个 且先会去public中去找
  //如果pubblic中有就不会转发请求了 容易出现问题
  // devServer: {
  //   proxy: 'http://localhost:5000'
  // }
  //开启代理服务器2
  devServer: {
    proxy: {
      //请求前缀是谁 如果请求前缀符合 下面就继续走
      //请求前缀紧跟端口号 写在axios里
      '/quan': {
        //请求的目标服务器
        target: 'http://localhost:5000',
        //路径过滤 正则替换空
        pathRewrite:{'^/quan':''},
        //用于支持webscoket
        ws: true,
        //服务器骗不骗另一个服务器自己从哪里来
        changeOrigin: true
      },
      // '/foo': {
      //   target: '<other_url>'
      // }
    }
  }
})

3种解决跨域方式的区别:

1.后端处理 前端基本不动啥

2.script标签引入资源不存在跨域 可以引入但是需要后端配合你 让你能掉回调方法

3.vue-cli 开启本地服务器 服务器和服务器之间不存在跨域 从本地代理一下 就能解决跨域 完全前端自己写这个

区别

请求测试工具-postman的使用

http和https

http:协议运行在TCP之上,明文传输,客户端与服务器无法验证对方的身份,默认端口80

https:运行在ssl(secure socket layer)上面,ssl运行在tcp上面,是添加了加密和认证机制的http,默认端口443,https的加减密处理消耗更多的CPU和内存资源,还需要证书。

相关推荐
sdghterhd8 小时前
WebSocket 快速入门教程(附示例源码)
网络·websocket·网络协议
随风一样自由8 小时前
【前端独角兽】刚进入前端领域的前端开发用jQuery还是Vue3?
前端·javascript·vue3·jquery
xy34538 小时前
Wireshark捕获过滤器——语法元素详解
网络·测试工具·渗透测试·wireshark
IMPYLH9 小时前
HTML 的 <data> 元素
前端·html
YHHLAI9 小时前
[特殊字符] 面试中的 Promise —— 从入门到精通
前端·javascript·面试
DLYSB_9 小时前
生命通道:如何用 HIS 医疗系统直连网络声光终端,打造“零延误”的危急值响应网关?
java·网络·数据库·报警灯
德福危险10 小时前
富有想象力的XSS盲打:靶机练习之Tempus_fugit5
服务器·网络·xss
kyriewen11 小时前
我扒了 GPT-5.6 的全部编程跑分——有一项 OpenAI 没敢放出来
前端·gpt·ai编程
哥是强混11 小时前
Means:基于 .NET 10 打造的开源自部署 S3 兼容对象存储服务
网络·数据库·.net
前端H12 小时前
微前端 v3 架构升级:从加载隔离到状态协同
前端·架构·状态模式