美文网首页
前端高频面试题——跨域

前端高频面试题——跨域

作者: Kagashino | 来源:发表于2018-11-06 15:21 被阅读0次

什么是跨域?为什么会跨域?

协议、端口和域名不一致成为跨域
跨域是因为浏览器需要遵守同源策略,发出的请求即使相应成功,也会被浏览器拦截下来
这个不细说了,一般面试官问你的是👇

如何解决跨域(JSONP)

拼脚本,写回调,重点:脚本src中的clientCallback和你声明的clientCallback

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>怎么用JSONP跨域</title>
</head>
<body>
  <button id="btn">发</button>
  <script>
    document.getElementById('btn').onclick = ()=>{
      go();
    }

    function go () {
      const s = document.createElement('script')
      s.src = 'http://localhost:3000?cb=clientCallback'
      s.async=true;
      document.body.appendChild(s);
    }
    function clientCallback(data){
      console.log(data); // 返回跨域请求结果
    }
  </script>
</body>
</html>
ky.png

为什么要这么做?

浏览器不会拦截跨域的script请求,相当于你向服务端要了一个JavaScript脚本文件并且立即执行

你这不是jQuery的啊,jQuery中怎么搞?

jQuery更简单,网上一堆爆款文,自查(axios同理)

服务端做了什么?

以express框架为例,只要设置回调名和返回jsonp格式的数据就好:

const express = require('express');
const app = express ()
const router = express.Router();

router.get('/', function(req, res, next) {
  res.jsonp({a:111,b:222});
});
app.set('jsonp callback name', 'cb');
app.use('/',router)

有没有别的办法(Access-Control-Allow-Origin)

当有跨域请求返回时,浏览器已经说得清清楚楚:服务端未提供'Access-Control-Allow-Origin'响应头

求求你们了,报错的时候看看错误信息吧!

在服务端设置响应头并返回(express):

  res.set({
    'Access-Control-Allow-Origin' : 'http://localhost:63342'//如果允许所有的跨域请求,url可以换成'*'
  })
  res.json({a:111,b:222});

前端直接请求(xhr, jquery封装后的Ajax,fetch whatever):

    document.getElementById('btn').onclick = ()=>{
      fetch('http://localhost:3000').then(res=>{
        return res.json()
      }).then(res=>{
        console.log('返回成功')
        console.log(res)
      })
    }
小结:任何要求前端独立解决跨域问题的面试提问都是耍流氓

相关文章

  • 前端高频面试题——跨域

    什么是跨域?为什么会跨域? 协议、端口和域名不一致成为跨域跨域是因为浏览器需要遵守同源策略,发出的请求即使相应成功...

  • 关于设置env等环境变量的思考

    1、如何处理跨域后台处理跨域前端处理跨域浏览器处理跨域 前端本地处理跨域:代理线上跨域的处理方式:Nginx反向代...

  • 跨域解决方案(史上最易懂)

    跨域总结 1.跨域思路 跨域解决方案一般分为两种:前端解决,后端解决 1.1 前端解决方案 通过前端解决的思想就是...

  • 浏览器跨域的那些事

    整理中 目标: 了解跨域 解决跨域 服务器配置跨域(java, nginx) 前端调试时配置解决跨域 一、什么是跨...

  • 前端跨域

    CORS跨域 1.CORS跨域-服务端设置,前端直接调用说明:后台允许前端某个站点进行访问 2.JSONP跨域-前...

  • vue-cli proxyTable配置

    前端的跨域转发 后端不需要配置,前端就可以实现跨域 proxyTable 的通常配置 这样就可以实现基本的跨域转发...

  • 好程序员web前端培训分享Web前端面试题汇总JS篇之跨域问题

    好程序员web前端培训分享Web前端面试题汇总JS篇之跨域问题,接着上一篇文章我们继续来探讨web前端面试必备面试...

  • django跨域配置

    前言——跨域请求 前端对Cross-Origin Resource Sharing 问题(CORS,中文又称'跨域...

  • ajax和跨域的一些问题

    简单的总结下ajax和跨域问题。 手写原生ajax算是比较高频的面试题了,目的就是看你是否明白其原理。首先是XML...

  • 今日头条面试--2018

    2018 最新今日头条面试题 CSRF了解吗? 如何理解跨域,怎么解决跨域? cookie,sessionStor...

网友评论

      本文标题:前端高频面试题——跨域

      本文链接:https://www.haomeiwen.com/subject/zjfuxqtx.html