美文网首页
前端跨域的处理

前端跨域的处理

作者: 家乡_a6ce | 来源:发表于2022-01-14 10:38 被阅读0次

一、什么是跨域

1.1 跨域

指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。

1.2 同源策略

是指协议,域名,端口都要相同,其中有一个不同都会产生跨域,在请求数据时,浏览器会在控制台中报一个异常,提示拒绝访问。

1.3 为什么出现跨域

后端代码在A服务器上启动,前端代码在B电脑上启动,此时就会出现跨域。 服务器和服务器之间可以相互请求数据,是没有跨域的概念(如果服务器没有设置禁止跨域的权限问题)

二、配置axios代理解决跨域(纯前端解决跨域问题)

解决跨域问题思路:

我们可以配置一个代理的服务器可以请求另一个服务器中的数据,然后把请求出来的数据返回到我们的代理服务器中,代理服务器再返回数据给我们的客户端,这样我们就可以实现跨域访问数据。

2.1 配置baseUrl

// main.js

import axios from 'axios'
Vue.prototype.$axios = axiosd
axios.defaults.baseURL = '/api'
复制代码

说明:axios.defaults.baseURL = '/api'作用是每次发送请求都会带一个/api的前缀

2.2 配置proxy

官方配置proxy文档说明

// vue.config.js

module.exports = {
    devServer: {
        proxy: {
            '/api': {
                target: '//111.222.333.444:8888',// 你要请求的后端接口ip+port
                changeOrigin: true,// 允许跨域,在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
                ws: true,// 开启webSocket
                pathRewrite: {
                    '^/api': '',// 替换成target中的地址
                }
            }
        }
    }
}
复制代码

2.3 组件中发送请求

// 原接口url:http://111.222.333.444:8888/test
// 原请求写法:this.$axios.get('http://111.222.333.444:8888/test')

// 配置proxy代理后请求写法
this.$axios.get('/test')
复制代码

原理说明:我们请求/test,就相当于请求了:localhost:8080/api/test,然后配置的proxy拦截了/api,并把/api以及前面的所有替换成了target的内容,因此实际请求的url是http://111.222.333.444:8888/test

2.4 重启vue项目,已经解决跨域问题

注:在浏览器的调试工具中,proxy代理后的请求url会变更显示为http://localhost:8080/api/test,且不会显示代理前的请求链接

相关文章

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

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

  • 前端踩过的坑

    关于前端 跨域问题 大概问题 1,前端无须处理,需要在后台配置 niginx的配置 处理跨域的域名 关于布局上 ...

  • 解决Vue中axios跨域问题----小白入门随笔

    1.解决跨域最好的办法当然还是后端处理咯 2.没办法只能前端处理了 /(ㄒoㄒ)/~~ ,设置反向代理服务解决跨域...

  • Ajax全接触(五) 处理跨域方式

    那么什么是跨域呢? 处理跨域方式-代理 我们在前端代码中将ajax访问后台url改成http://127.0.0....

  • 实现跨域请求的八种方式

    前端开发中我们经常会遇到跨域请求的情况,处理跨域请求方式很多,特整理如下: 浏览器的同源策略 提到跨域不能不先说一...

  • 前端跨域的处理

    由于浏览器的同源策略保护机制,浏览器不能执行来自其他来源的脚本。通过js在不同的域之间进行数据传输或通信,比如用a...

  • 前端跨域的处理

    一、什么是跨域 1.1 跨域 指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对java...

  • nginx跨域配置

    使用场景 项目采用前后端分离模式,前端需单独处理跨域 跨域配置 打开根目录下的conf/nginx.conf文件 ...

  • 记一次浏览器预检请求跨域问题的踩坑

    通用的跨域处理方案 如果你是一枚前端工程师,我想应该或多或少对浏览器跨域请求有一些了解。 跨域的详细知识,就不再这...

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

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

网友评论

      本文标题:前端跨域的处理

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