vue解决跨域的几种办法_前端跨域解决方案

vue解决跨域的几种办法_前端跨域解决方案什么是跨域  跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据。源指协议,端口,域名。只要这个3个中有一个不同就是跨域。这里列举一个经典的列子:#协议跨域http://a.baidu.com访问https://a.baidu.com;#端口跨域http://a.baidu.com:8080访问http://a.baidu.com:80;#域名跨域http://a.baidu.com访问http://b.baidu.com;  现在很多公司都是采用前后分离的方式开发。那么出

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

什么是跨域

  跨域指浏览器不允许当前页面的所在的源去请求另一个源的数据。源指协议,端口,域名。只要这个3个中有一个不同就是跨域。 这里列举一个经典的列子:

#协议跨域
http://a.baidu.com访问https://a.baidu.com;
#端口跨域
http://a.baidu.com:8080访问http://a.baidu.com:80;
#域名跨域
http://a.baidu.com访问http://b.baidu.com;

  现在很多公司都是采用前后分离的方式开发。那么出现经常和会跨域打交道。我这里整理日常开发中解决跨域的几种方案。我们前端使用的Vue,后端使用的NodeJs。

解决方案

proxyTable

  这里vue脚手架生成的标准项目为准。一般在项目config目录下面有个index文件。里面格式如下:

'use strict'
const path = require('path')
module.exports = {
    dev: {
        // Paths
        assetsSubDirectory: 'static',
        assetsPublicPath: '/',
        proxyTable: {
            '/api': {
                target: 'http://localhost:7001',//后端接口地址
                changeOrigin: true,//是否允许跨越
                pathRewrite: {
                    '^/api': '/api',//重写,
                }
            }
        },
        host: '192.168.0.104',
        port: 8081,
        autoOpenBrowser: false,
        errorOverlay: true,
        notifyOnErrors: true,
        poll: false,
        useEslint: true,
        showEslintErrorsInOverlay: false,
        devtool: 'eval-source-map',
        cacheBusting: true,
        cssSourceMap: false,
    },

}

  上面配置中,我们根据实际情况只需要修改proxyTable对于配置即可。假设我后端请求地址是http://localhost:7001,所有api的接口url都以/api开头。所以首先需要匹配所有以/api开头的.然后修改target的地址为http://localhost:7001。最后修改pathRewrite地址。将前缀 ‘^api’ 转为 ‘/api’。如果本身的接口地址就有 ‘/api’ 这种通用前缀,就可以把 pathRewrite 删掉。注意这个方式只能在开发环境中使用。

CORS

  CORS即跨源资源共享,它定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。它是一个妥协,有更大的灵活性,但比起简单地允许所有这些的要求来说更加安全。但是CORS也具有一定的风险性,比如请求中只能说明来自于一个特定的域但不能验证是否可信,而且也容易被第三方入侵。 这里一般需要后端配合,开启cors。一般各种语言都有类似的包。比如NodeJS的koa2-cors

var koa = require('koa');
//npm install --save koa2-cors
var cors = require('koa2-cors');
var app = koa();
//开启
app.use(cors());

这个方式解决的跨越问题支持开发和生产环境。但是有一定的安全性问题。

Nginx

  当我们明白跨越的含义之后。只要解决了’源’的问题。那么跨越也就不存在了。这里我们便会想到proxy,同时也会想到Nginx。

我们只需要在部署静态资源配置下面加上红框里面的配置就可以了。同时这个方法支持开发环境和生产环境。

后端程序代理

  当然上面2个方法都需要后端的配合和需要修改服务器配置。所有还有一种方法不需要他们配合 ,我们自己就可以做到。就是我们自己启一个后端程序做代理。然后把所有的请求转发到服务器。这里要用到node的一个包http-proxy-middleware。关键代码(express)如下

  

用Vue-cli脚手架搭建了个demo,前后分离就有跨域问题的出现。

vue-clie搭建demo步骤(传送门):https://www.cnblogs.com/wangenbo/p/8487764.html

我自己在网上找了2个接口做测试:

CSDN:https://www.csdn.net/api/articles?type=more&category=home&shown_offset=1524276761019196&first_view=false

掘金:https://suggest-follow-api-ms.juejin.im/v1/getByTag?tag=%E5%89%8D%E7%AB%AF&src=web&t=1

安装模块axios进行ajax请求,直接请求,肯定显示跨域,无法请求。

 ===============    以下为npm run dev 跨域的解决方法    ===============

vue解决跨域的几种办法_前端跨域解决方案

脚手架Vue-cli已经帮我们留好了接口

参考这篇文章才知道:https://blog.csdn.net/qq_31201781/article/details/78778193

在config目录下的index.js文件,有个参数:

proxyTable:{}

所以,我把参数添加成:

vue解决跨域的几种办法_前端跨域解决方案

原来接口:

CSDN:https://www.csdn.net/api/articles?type=more&category=home&shown_offset=1524276761019196&first_view=false

掘金:https://suggest-follow-api-ms.juejin.im/v1/getByTag?tag=%E5%89%8D%E7%AB%AF&src=web&t=1

请求链接就变成这样了:

vue解决跨域的几种办法_前端跨域解决方案

vue解决跨域的几种办法_前端跨域解决方案

最后,把数据打印出来,就可以了。。

vue解决跨域的几种办法_前端跨域解决方案

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/187264.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 好用的Redis客户端操作工具[通俗易懂]

    好用的Redis客户端操作工具[通俗易懂]日常开发过程中,项目常常都会使用Redis来做缓存或者Session服务器,为了更直观方便,开发者常常会使用一些可视化工具,如RedisDesktopManager、RedisClent等,但界面UI做得不尽人意,作为当今时代,对软件的UI还是有所期待的,今天给大家分享一款,高颜值、功能强大的Redis客户端工具。AnotherRedisDesktopManager一个更快、更好、更稳定的redis桌面管理工具,可以运行于Linux、Windows、Mac三大平台,并且当加载大数量的key不.

    2022年6月5日
    34
  • notepad++编译C++

    notepad++编译C++

    2021年8月18日
    56
  • 机房搬迁是什么意思_计算机机房管理规定

    机房搬迁是什么意思_计算机机房管理规定原标题:盘点机房搬迁中最容易出现的五个问题企业要更换办公地址的时候,最头疼的问题就是搬迁机房,机房的搬迁可不是搬家那么简单,是否能顺利搬迁,将成为保障企业业务连续性的关键要素。在企业机房的搬迁中,最容易出现哪些问题?盘点机房搬迁中最容易出现的五个问题(1)领导不明确在规划阶段最常见的错误是未能建立明确的领导。这意味着在迁移过程中的各个阶段中要确定谁负责明确的沟通,带领团队。在一个单一的部门,默认…

    2025年6月26日
    4
  • PHP 安全问题入门:10 个常见安全问题 + 实例讲解

    PHP 安全问题入门:10 个常见安全问题 + 实例讲解

    2022年2月12日
    44
  • 自动滑块验证码识别_滑块验证码原理

    自动滑块验证码识别_滑块验证码原理一、滑块验证码简述有爬虫,自然就有反爬虫,就像病毒和杀毒软件一样,有攻就有防,两者彼此推进发展。而目前最流行的反爬技术验证码,为了防止爬虫自动注册,批量生成垃圾账号,几乎所有网站的注册页面都会用到验证码技术。其实验证码的英文为CAPTCHA(CompletelyAutomatedPublicTuringtesttotellComputersandHumans…

    2025年8月6日
    3
  • linux .vimrc设置 tab设置

    linux .vimrc设置 tab设置一.仅设置当前用户的Tab键宽度输入命令:vim~/.vimrc然后:settabstop=4 //我这里将Tab键的宽度设置为4保存:ctrl+z+z(或:wq!)OK!二.设置所有用户的Tab键宽度输入命令:vim/etc/vimrc在vimrc文件的最后添加:settabstop=4保存:ctrl+z+z(或:wq!)OK!这样不管是哪个用…

    2022年5月3日
    64

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号