前端ajax阶段高频面试题:

目录

1.你在工作中有没有遇到需要跨域的情况,如果有请说一下你的解决方案(至少说出3种)。vue的解决方案是什么?

2.(原生)ajax常用的方法有哪些?简单讲一下区别

3.ajax中get请求和post请求的区别有哪些?

4.http状态码有哪些?分别代表什么意思?(大家在写的时候写一些典型的状态码,如:200,302,403,404,500,502)

5、json和jsonp的区别

6、用过哪些代码版本控制工具?常用的操作命令有哪些?


 1.你在工作中有没有遇到需要跨域的情况,如果有请说一下你的解决方案(至少说出3种)。vue的解决方案是什么?

跨域:协议、端口、域名;浏览器的“同源策略”,服务器端无跨域(关键词:同源策略)

一般跨域会报这样的错误:No 'Access-Control-Allow-Origin' header is present on the requested resource,并且The response had HTTP status code 404

    解决方案:JSONP方式、CORS方式、代理请求方式(一般至少说出3种)
    jsonp:利用<script>脚本拥有跨域能力,所以jsonp可以解决跨域问题。需要协助后端工程师一起解决
    cors:后端工程师解决。
    

  例:nodejs项目中解决跨域:
        app.all('*', function(req, res, next) {  
          //设置允许跨域的域名,*代表允许任意域名跨域
            res.header("Access-Control-Allow-Origin", "*");   // 也可以写上具体的IP地址
        //允许的header类型
            res.header("Access-Control-Allow-Headers", "X-Requested-With"); 
          //跨域允许的请求方式 
            res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");  
            res.header("Content-Type", "application/json;charset=utf-8");  
            next();  
        }); 


    代理请求方式:前端ajax请求自己的本地接口,然后本地接口接收到请求后向实际的接口请求数据,然后再将信息返回给前端 
  
  (可以了解)vue解决方案:`核心原理,服务器代理`。使用proxyTable的原理就是将域名发送给本地的服务器,再由本地的服务器去请求真正的服务器。在配置文件中添加:

  proxyTable:{
    '/': {
            target: 'http://www.web.cn/api', //你要访问的服务器域名
            changeOrigin: true, //允许跨域
            pathRewrite: {
                '^/': '' //重写规则 只要访问的是/开头的都会自动处理成http://www.web.cn/api
            }
        }
    }

2.(原生)ajax常用的方法有哪些?简单讲一下区别

var xhr = new XMLHttpRequest();
	xhr.open("post","validate.php"); //调用open(method, url ,async)设置请求信息
	//post提交需设置header头 调用setRequestHeader(header,value)设置HTTP请求头
	xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
	xhr.send("username="+name); //调用send([string])发送
	xhr.onreadystatechange = function(){
	// 判断服务器是否响应,判断异步对象的响应状态
    	if(xhr.status == 200 && xhr.readyState == 4){
        	document.querySelector(".showmsg").innerHTML = xhr.responseText;
      }
	 }

 3.ajax中get请求和post请求的区别有哪些?

1、形式:get请求会将参数跟在URL后面进行参数传递,而post请求则是作为http消息的实体内容发送给web服务器;
    2、大小:get提交的数据限制是1024字节,这种显示是来自特定浏览器和服务器对它的限制。
    3、安全:在某种情况下,get方式会带来严重的安全问题,而post相对来说可以避免这些问题。

4.http状态码有哪些?分别代表什么意思?(大家在写的时候写一些典型的状态码,如:200,302,403,404,500,502)

    2XX系列响应代码表明:操作成功了,表示服务器成功响应了客户端所请求的动作
    3XX系列响应代码表明:客户端需要做些额外工作才能得到所需要的资源。它们通常用于GET请求
    4XX系列响应代码表明:客户端出现错误,不是认证信息有问题,就是表示格式或HTTP库本身有问题。客户端需要自行改正
    5XX系列响应代码表明:服务端错误,意味着服务器处于不能执行客户端请求的状态,此时客户端应稍后重试

5、json和jsonp的区别

JSON是一种数据交换格式,而JSONP是一种非官方跨域数据交互协议,动态创建script标签利用src可跨域的能力解决跨域问题。json是描述信息的格式,jsonp是信息传递双方约定的协议。
    JSON.parse、JSON.stringify
            将 JavaScript 对象表示法 (JSON) 字符串转换为对象
            将 JavaScript 值转换为 JavaScript 对象表示法 (JSON) 字符串
    json字符串和json对象的区别:
          

 var person = {"name":"元元姐",age:'18'}
      console.log(person.name) //
      console.log(typeof person)
      
      // var person = '{"name":"元元姐","age":"18"}'
      // console.log(typeof person)

6、用过哪些代码版本控制工具?常用的操作命令有哪些?

git/svn选择一个重点去说就行。 github?gitlab gitee(码云) 托管平台,远程仓库 touch?
如:
git init
git add .
git commit –m "提交消息" 
git status
git checkout -b 新分支名称
git push -u origin 新分支名称 
git checkout 分支名称
git branch
常用的命令也可以按照自己平时操作的顺序说就行
    

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值