前端如何解决跨域问题

278 阅读1分钟

1、cors:后端在返回数据的时候携带几个特殊的响应头,这才是真正意思的解决跨域,容易造成任何人都可以去该接口拿数据,不安全

2、jsonp,原理:使用script标签,src属性不受同源策略的影响实现的。真正开发使用较少:需要钱后端配合,只能解决get请求的跨域。

3、代理服务器,此方法使用较多:配置一个代理服务器。

例如:真正接口服务器 5000, 代理服务器 8080, 浏览器8080,服务器与服务器打交道不用ajax,不存在跨域

方式1: 利用nginx,

方式2: webpack中的proxy它会帮我们开一个代理服务器。

如何配置一个代理服务器: vue.config.js

// vue.config.js
devServer: {
    hot:true, // 它是热更新:只更新改变的组件或者模块,不会整体刷新页面
    open: true, // 是否自动打开浏览器
    proxy: { // 配置代理(只在本地开发有效,上线无效)
      "/api": { // 这是请求接口中要替换的标识
        target: "https://localhost:5000", // 请求的目标地址,即把 /api 前面的(协议 + 域名+端口)替换成这个
        pathRewrite: {"^/api" : ""},  // 后台在转接的时候url中是没有 /api 的,以api前缀开头的,前缀部分都替换成空
        secure: false, // 若代理的地址是https协议,需要配置这个属性,
        changeOrigin: true, // 加了这个属性,那后端收到的请求头中的host是目标地址target
      },
    } 
  }