前端:如何解决项目中的跨域问题?

跨域问题

现在绝大多数公司的项目都是前后端分离的,前后端分离后势必会遇到跨域问题。

目录

跨域问题

一、为什么会出现跨域问题

二、什么是跨域

三、用vue-cil配置跨域代理解决跨域



一、为什么会出现跨域问题

出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)

二、什么是跨域

当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

当前url请求url是否跨域

http://localhost:8888

https://localhost.javashitang.com 是,协议不同
http://loaclhost:8888http://www:8888是,域名不同
http://loaclhost:8888http://loaclhost:8777是,端口不同

三、用vue-cil配置跨域代理解决跨域

这个项目前端的项目在我自己的本地电脑中,网址是http://localhost:9528/

而后端的接口是https://jamqima.xxx.com  这两个并不在一个域名之下,那么前端项目访问后端接口必然存在跨域的行为。

之前做的那个后台美食管理系统这个项目并不存在跨域问题,因为我的后端接口是自己搭建在本地,自己本地搞了一个服务器,域名也是localhost,所以当时并不需要解决跨域问题。

跨域问题有开发环境的跨域和生产环境的跨域,我现在所遇见的这种跨域是位于开发环境的跨域,真正部署上线时的跨域是生产环境的。

解决开发环境的跨域:

Vue-cil的配置文件即 vue.config,js,示例说明:

module.exports = {
  devServer: {
   // 代理配置
    proxy: {
        // 这里的api 表示如果我们的请求地址有/api的时候,就出触发代理机制
        // localhost:8888/api/abc  => 代理给另一个服务器
        // 本地的前端  =》 本地的后端  =》 代理我们向另一个服务器发请求 (行得通)
        // 本地的前端  =》 另外一个服务器发请求 (跨域 行不通)
        '/api': {
        target: 'www.baidu.com', // 我们要代理的地址
        changeOrigin: true, // 是否跨域 需要设置此值为true 才可以让本地服务代理我们发出请求
         // 路径重写
        pathRewrite: {
         // 重新路由  localhost:8888/api/login  =>www.baidu.com/api/login
            '^/api': '' // 假设我们想把 localhost:8888/api/login 变成www.baidu.com/login 就需要这么做 
        }
      },
    }
  }
}

我在员工考勤的后台管理在vue.config.js的配置如下:

// 代理跨域的配置
 proxy: {
  // 当我们的本地的请求 有/api的时候,就会代理我们的请求地址向另外一个服务器发出请求
  '/api': {
    target: 'http://ihrm-java.itheima.net/', // 跨域请求的地址
    changeOrigin: true // 只有这个值为true的情况下 才表示开启跨域
  }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值