node+vue开发环境下接口数据传递中的跨域问题

这篇具有很好参考价值的文章主要介绍了node+vue开发环境下接口数据传递中的跨域问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

跨域问题产生原因

原因

大部分浏览器自带的保护措施,限制用户在一个域名下请求另一个域名的数据

一、关于跨域

跨域对于前后端开发者来说,就像一块狗皮膏药,无论是面试还是开发中,都会经常遇到。

之所以出现跨域问题,是因为浏览器的同源策略,为了隔离潜在的恶意文件,为了防御来自歪门邪道的攻击,浏览器限制了从同一个源加载的文档或脚本与来自另一个源的资源进行交互。

前面我们提到了,前端跑在 8080 端口下,后端跑在 9002 端口下,这种情况就属于不同的源(域名不同,协议不同,端口不同),所以 8080 端口下的前端请求直接访问 9002 端口下的后端接口时就访问失败了。

vue前端解决办法

Nodejs 代理

在 Nodejs 出现之前,JavaScript 编写的程序通常需要在用户的浏览器上执行,Node.js 出现后,JavaScript 也能用于服务端编程了。Nodejs 一系列的内置模块使得程序可以脱离 IIS、Apache 这种 Web 服务作为独立的服务器执行。

我们使用 Nodejs 来解决跨域问题的思路就是,在本地创建一个虚拟服务器,对 8080 端口下的前端请求进行代理,同时接收 9002 端口下的服务器端响应,这样服务端和服务端进行数据的交互就不会出现跨域问题了。

第一步,配置 Nodejs 代理服务

module.exports = {
  dev: {
    // Paths
    assetsSubDirectory: 'static',
    assetsPublicPath: '/',
    proxyTable: {
      '/api': {
        target: 'http://localhost:9002', // 你请求的第三方接口
        changeOrigin: false, // 在本地会创建一个虚拟服务端,然后发送请求的数据,并同时接收请求的数据,这样服务端和服务端进行数据的交互就不会有跨域问题
        pathRewrite: { // 路径重写,
          '^/api': '' // 替换target中的请求地址,也就是说以后你在请求http://api.codingmore.top/v2/XXXXX这个地址的时候直接写成/api即可。
        }
      },
    },
}

第二步,配置前端访问请求路径

module.exports = merge(prodEnv, {
  NODE_ENV: '"development"',
  VUE_APP_BASE_API: '"/api"'
  // VUE_APP_BASE_API: '"http://localhost:9002"'
})

第三步,重启前端服务

node后端解决办法

方法1:设置express

var express = require('express');
var app = express();
//跨域问题解决方面
app.all('*',function (req, res, next) {
 res.header('Access-Control-Allow-Origin', 'http://localhost:8080');//仅支持配置一个域名
 res.header('Access-Control-Allow-Headers', 'Content-Type, Content-Length, Authorization, Accept, X-Requested-With , yourHeaderFeild');
 res.header('Access-Control-Allow-Methods', 'PUT, POST, GET, DELETE, OPTIONS');
 res.header('Access-Control-Allow-Credentials',true)//允许客户端携带验证信息
 next(); 
});

方法2:使用cors

npm install cors
//跨域问题解决方面
const cors = require('cors'); 
app.use(cors({
  origin: ['http://localhost:8080','http://www.baidu.com'],//可设置多个跨域域名
  credentials: true//允许客户端携带验证信息
}))

注意,这里得自己得域名必须带上www,否则照样不能实现跨域,因为浏览器去请求服务器时,是完整的域名,所以后端验证也应该是完整的域名。文章来源地址https://www.toymoban.com/news/detail-820154.html

到了这里,关于node+vue开发环境下接口数据传递中的跨域问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Vue3前端开发,父组件给子组件传递数据练习

    Vue3前端开发,父组件给子组件传递数据练习!还是借用刚刚的组件模板,来开展父传子的练习。 依旧是需要借助官方提供的宏函数来接收数据。defineProps. 这个是父组件里面的内容。我们自定义了2个变量,一个是车厘子单价。一个是纯文本。 一个数字类型,一个文本类型。都

    2024年01月22日
    浏览(48)
  • Web前端VScode/Vue3/git/nvm/node开发环境安装

    目录 1 基本配置 2 安装vscode 3 安装vue 4 配置bash 5 安装nvm 6 安装node 7 安装yarn 8 新建项目 9 运行helloworld 本篇是为了做前端开发的环境而写。使用的操作系统是windows 10 64位 现在做vue和node基本就是vscode和webstorm,本篇就是用vscode。 可以从主页直接下载 选择windows版本下载即可。

    2024年02月04日
    浏览(61)
  • vue前端开发自学,子组件传递数据给父组件,使用$emit

    vue前端开发自学,子组件传递数据给父组件,使用$emit 父子组件之间互相传递数据的情况非常常见,下面为大家介绍的是,来自子组件,给父组件传递数据的情况。 如图,以上代码是父组件的代码情况,ComponentEvent.vue。 可以看出来,里面的特殊点,在于,有个子组件的引用和标

    2024年01月23日
    浏览(42)
  • 解决系统开发中的跨域问题:CORS、JSONP、Nginx

    本博客配套的源码在这里 最近我在做一个系统的全栈开发,遇到了这样一个问题。 首先,我的前端是一个来自百度的开源框架——Amis,它封装自React.js,基于JSON配置。我下载了Amis提供的SDK文件夹,并进行了代码开发。但是我在部署整个系统的时候遇到了跨域问题。原因是,

    2024年01月20日
    浏览(58)
  • vue前端开发自学,父子组件传递数据,借助于Props实现子传父

    vue前端开发自学,父子组件传递数据,借助于Props实现子传父! 之前我们说过,Props这个是用在父传子的情况下,今天为大家介绍的代码,就是在父组件里,自定义事件,绑定一个函数,让子组件可以接受到这个自定义事件绑定的函数,从而“委婉”的传递数据给父组件。 如图

    2024年01月23日
    浏览(41)
  • vue前端开发自学练习,Props数据传递-类型校验,默认值的设置!

     vue前端开发自学练习,Props数据传递-类型校验,默认值的设置! 实际上,vue开发框架的时候,充分考虑到了前端开发人员可能会遇到的各种各样的情况,比如大家经常遇到的,数据类型的校验,再比如,默认值的设定等等。下面给大家展示一下,源码。和实际的效果。 如图,

    2024年01月23日
    浏览(39)
  • 解决Spring Boot前后端分离开发模式中的跨域问题

    在实际开发中,经常会遇到前端Vue应用与后端Spring Boot API接口存在跨域访问的问题。本篇博客将分享解决Spring Boot前端Vue跨域问题的实战经验,帮助开发者快速解决该问题。 跨域问题是由于浏览器的同源策略引起的。同源策略限制了从一个源加载的文档或脚本如何与来自另一

    2024年02月10日
    浏览(110)
  • Vue3前端开发,provide和enject的基础练习,跨层级传递数据

    Vue3前端开发,provide和enject的基础练习,跨层级传递数据! 声明:provide虽然可以跨层级传递,但是依旧是需要由上向下的方向传递。根传子的方向。 这个是入口组件的内容,我们调用了一个中间组件Middle.vue。 这个是中间组件的内容,我们调用了一个三级组件Three.vue. 这个是第三

    2024年01月22日
    浏览(49)
  • 本地开发环境请求服务器接口跨域的问题(vue的问题)

    上面的这个报错大家都不会陌生,报错是说没有访问权限(跨域问题)。本地开发项目请求服务器接口的时候,因为客户端的同源策略,导致了跨域的问题。下面先演示一个没有配置允许本地跨域的的情况: 可以看到,此时我们点击获取数据,浏览器提示我们跨域了。所以我

    2024年01月23日
    浏览(53)
  • vue——接口修改请求头——有些接口不需要请求头传递token——基础积累

    最近在写后台管理系统的时候,遇到一个切换租户的功能。在请求接口的时候不需要传递 token 直接上代码吧: 完成!!!多多积累,多多收获! 下面介绍一下 axios 的基本用法: axios官网:https://www.axios-http.cn/docs/intro Axios 是一个基于 promise 网络请求库,作用于node.js 和浏览器

    2024年02月13日
    浏览(49)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包