【Vue】vue2与netcore webapi跨越问题解决

news2024/11/27 0:39:21

系列文章

C#底层库–记录日志帮助类
本文链接:https://blog.csdn.net/youcheng_ge/article/details/124187709

文章目录

  • 系列文章
  • 前言
  • 一、技术介绍
  • 二、问题描述
  • 三、问题解决
    • 3.1 方法一:前端Vue修改
    • 3.2 方法二:后端允许Cors跨越访问
  • 四、资源链接


前言

本专栏为【H5】,主要介绍前端知识点。
在这里插入图片描述

一、技术介绍

跨越介绍

二、问题描述

vue2与netcore webapi跨越问题解决
在这里插入图片描述

三、问题解决

3.1 方法一:前端Vue修改

配置代理转发,加URL拦截,转换成新的URL
vue.config.js文件,加一下代码:

    proxy:{
      '/api': { // api表示拦截以/api开头的请求路径
        target: 'http://localhost:5296/api', //跨域的域名
        changeOrigin:true,//是否开启跨域
        pathRewrite:{ 
          '^/api':'' // 重写请求,把/api变为空字符
        }
      }
    }

3.2 方法二:后端允许Cors跨越访问

Program.cs文件

//配置跨域
builder.Services.AddCors(c =>
{
    c.AddDefaultPolicy(policy =>
    {
        policy.AllowAnyOrigin()//允许所有来源的访问
        .AllowAnyHeader()//允许所有类型的请求头
        .AllowAnyMethod();//允许所有类型的请求
    });
});

启动跨越,在run之前

app.UseCors();
app.UseHttpsRedirection();

四、资源链接

vue.config.js文件

'use strict'
const path = require('path')
const defaultSettings = require('./src/settings.js')

function resolve(dir) {
  return path.join(__dirname, dir)
}

const name = defaultSettings.title || 'vue Admin Template' // page title

// If your port is set to 80,
// use administrator privileges to execute the command line.
// For example, Mac: sudo npm run
// You can change the port by the following methods:
// port = 9528 npm run dev OR npm run dev --port = 9528
const port = process.env.port || process.env.npm_config_port || 9528 // dev port

// All configuration item explanations can be find in https://cli.vuejs.org/config/
module.exports = {
  /**
   * You will need to set publicPath if you plan to deploy your site under a sub path,
   * for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,
   * then publicPath should be set to "/bar/".
   * In most cases please use '/' !!!
   * Detail: https://cli.vuejs.org/config/#publicpath
   */
  publicPath: '/',
  outputDir: 'dist',
  assetsDir: 'static',
  lintOnSave: process.env.NODE_ENV === 'development',
  productionSourceMap: false,
  devServer: {
    port: port,
    open: true,
    overlay: {
      warnings: false,
      errors: true
    },
    proxy:{
      '/api': { // api表示拦截以/api开头的请求路径
        target: 'http://localhost:5296/api', //跨域的域名
        changeOrigin:true,//是否开启跨域
        pathRewrite:{ 
          '^/api':'' // 重写请求,把/api变为空字符
        }
      }
    }
  },
  configureWebpack: {
    // provide the app's title in webpack's name field, so that
    // it can be accessed in index.html to inject the correct title.
    name: name,
    resolve: {
      alias: {
        '@': resolve('src')
      }
    }
  },
  chainWebpack(config) {
    // it can improve the speed of the first screen, it is recommended to turn on preload
    config.plugin('preload').tap(() => [
      {
        rel: 'preload',
        // to ignore runtime.js
        // https://github.com/vuejs/vue-cli/blob/dev/packages/@vue/cli-service/lib/config/app.js#L171
        fileBlacklist: [/\.map$/, /hot-update\.js$/, /runtime\..*\.js$/],
        include: 'initial'
      }
    ])

    // when there are many pages, it will cause too many meaningless requests
    config.plugins.delete('prefetch')

    // set svg-sprite-loader
    config.module
      .rule('svg')
      .exclude.add(resolve('src/icons'))
      .end()
    config.module
      .rule('icons')
      .test(/\.svg$/)
      .include.add(resolve('src/icons'))
      .end()
      .use('svg-sprite-loader')
      .loader('svg-sprite-loader')
      .options({
        symbolId: 'icon-[name]'
      })
      .end()

    // set preserveWhitespace
    config.module
      .rule('vue')
      .use('vue-loader')
      .loader('vue-loader')
      .tap(options => {
        options.compilerOptions.preserveWhitespace = true
        return options
      })
      .end()

    config
      .when(process.env.NODE_ENV !== 'development',
        config => {
          config
            .plugin('ScriptExtHtmlWebpackPlugin')
            .after('html')
            .use('script-ext-html-webpack-plugin', [{
            // `runtime` must same as runtimeChunk name. default is `runtime`
              inline: /runtime\..*\.js$/
            }])
            .end()
          config
            .optimization.splitChunks({
              chunks: 'all',
              cacheGroups: {
                libs: {
                  name: 'chunk-libs',
                  test: /[\\/]node_modules[\\/]/,
                  priority: 10,
                  chunks: 'initial' // only package third parties that are initially dependent
                },
                elementUI: {
                  name: 'chunk-elementUI', // split elementUI into a single package
                  priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app
                  test: /[\\/]node_modules[\\/]_?element-ui(.*)/ // in order to adapt to cnpm
                },
                commons: {
                  name: 'chunk-commons',
                  test: resolve('src/components'), // can customize your rules
                  minChunks: 3, //  minimum common number
                  priority: 5,
                  reuseExistingChunk: true
                }
              }
            })
          // https:// webpack.js.org/configuration/optimization/#optimizationruntimechunk
          config.optimization.runtimeChunk('single')
        }
      )
  }
}

Program.cs文件

using System.Configuration;
using WebApplication5;

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.

//配置跨域
builder.Services.AddCors(c =>
{
    c.AddDefaultPolicy(policy =>
    {
        policy.AllowAnyOrigin()//允许所有来源的访问
        .AllowAnyHeader()//允许所有类型的请求头
        .AllowAnyMethod();//允许所有类型的请求
    });
});

builder.Services.AddControllers();
// Learn more about configuring Swagger/OpenAPI at https://aka.ms/aspnetcore/swashbuckle
builder.Services.AddEndpointsApiExplorer();
builder.Services.AddSwaggerGen();


var app = builder.Build();

app.UseCors();
app.UseHttpsRedirection();

if (app.Environment.IsDevelopment())
{
    app.UseSwagger();
    app.UseSwaggerUI();
}

app.UseHttpsRedirection();

app.UseAuthorization();

app.MapControllers();

app.Run();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1089998.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

容器化应用程序管理与分发工具集 | 开源专题 No.34

kubernetes/kubernetes Stars: 101.7k License: Apache-2.0 Kubernetes 是一个开源系统,用于管理跨多个主机的容器化应用程序。它提供了部署、维护和扩展应用程序的基本机制。Kubernetes 借鉴了 Google 在大规模运行生产负载方面十五年的经验,并结合了社…

MySQL操作合集

数据库的操作 创建数据库 create database [if not exists] db_name [character set utf8] [collate utf8_general_ci];查看所有数据库 show databases;查看数据库的创建语句 show create database db_name;修改数据库 alter database db_name character set utf8 colla…

JWT的原理及实际应用

前言: 定义:JSON Web Token(缩写 JWT)是目前最流行的跨域认证解决方案 JWT官网 由于HTTP协议是无状态的,这意味着如果我们想判定一个接口是否被认证后访问,就需要借助cookie或者session会话机制进行判定&…

气膜建筑膜材分为哪些类型?

近年来随着人们的环保理念越来越强,气膜结构建筑因其材料特性慢慢开始投入到各个领域当中,并且也得到了很大的推广。关于气膜结构建筑的使用年限和所使用的膜材料参数有哪些。 气膜建筑所使用的膜材是一种具有高强度、柔韧性好的薄膜材料,是由…

​EtherNet/IP 库卡机器人和EtherCAT倍福PLC总线协议连接案例​

EtherNet/IP 是一种适合于工业环境和对时间要求比较苛刻的应用的网络。而远创智控YC-EIPM-ECT通讯网关,是一款自主研发的EtherNet/IP 从站功能的通讯网关。它不仅可以实现EtherNet/IP 和EtherCAT的无缝连接,还可以将EtherNet/IP 作为从站连接到EtherCAT总…

专业吃鸡行家揭秘:战斗力提升、作战干货、库存查询一网打尽!

吃鸡玩家们,大家好!今天我作为专业吃鸡行家,将为大家揭秘一些热门话题,为你提供不同寻常的干货,让你的吃鸡之路更上一层楼! 首先,让我们来谈谈战斗力提升。除了一些基本的游戏技巧,我…

有想过吗,高速信号隔直电容为什么是几百NF量级的?

高速先生成员--黄刚 交流耦合电容,坊间也俗称隔直电容,相信大家对它的原理都非常的熟悉,就是把直流电平隔掉,保证传输过程中电平的转换不会影响接收端。下面的一条常见的PCIE4.0的金手指链路,TX端会有隔直电容&#x…

如何通过MES系统提高生产计划效率?

导 读 ( 文/ 1730 ) 在现代制造业中,通过制造执行系统(MES)系统来提高生产计划效率是至关重要的。本文将介绍如何通过MES系统来优化生产计划,包括实时数据分析、智能排程和协同协作。通过这些关键方法,企业可以提高生产…

VBA_MF系列技术资料1-202

MF系列VBA技术资料 为了让广大学员在VBA编程中有切实可行的思路及有效的提高自己的编程技巧,我参考大量的资料,并结合自己的经验总结了这份MF系列VBA技术综合资料,而且开放源码(MF04除外),其中MF01-04属于定…

外卖跑腿系统开发的最佳实践和成功案例

外卖跑腿系统的开发既涉及技术实现,也需要考虑用户体验、运营策略和合规性。以下是一些最佳实践和一些成功的案例,以帮助您更好地理解这个领域的要点。 1. 技术框架的选择 选择适合的技术框架是外卖跑腿系统成功的关键。您可以考虑使用以下技术&#…

混凝土搅拌站预拌厂数字孪生可视化管理系统,三维可视化数据监控平台

本项目基于三维建模、数据融合等技术,构建一套实时的混凝土搅拌站厂区数字孪生可视化系统,提升混凝土搅拌站厂区信息化建设水平。 通过三维可视化项目的建设,实现搅拌站厂区展示和漫游、生产流程中设备的实时映射孪生、关键设备参数及指标图…

所谓的35岁中年危机只不过是在还曾经的债、填曾经的坑罢了~

听人劝、吃饱饭,奉劝各位小伙伴,不要订阅该文所属专栏。 作者:不渴望力量的哈士奇(哈哥),十余年工作经验, 跨域学习者,从事过全栈研发、产品经理等工作,现任研发部门 CTO 。荣誉:2022年度博客之星Top4、博客专家认证、全栈领域优质创作者、新星计划导师,“星荐官共赢计…

修改jar包中的class文件

1.解压jar包:将要修改内容的jar包解压; 2.修改为java文件:将解压后的class文件用idea打开,创建一个同名的java文件,将class文件全部内容赋值到java文件中;我这里是做了导出升级,修改了一些参数…

U盘重装笔记本系统Win10操作方法

如果我们的笔记本系统出现崩溃、病毒感染等问题,这时候我们就可以给笔记本电脑重新安装系统。但是,很许多新人用户不知道笔记本电脑Win10系统重装的详细步骤,接下来小编给大家详细介绍关于利用U盘给笔记本Win10电脑重装系统的方法&#xff0c…

SAAS模式和本地化部署哪种更好?

导 读 ( 文/ 1798 ) 在制造执行系统(MES)的选择和部署过程中,企业面临着SAAS(软件即服务)模式和本地化部署两种选择。SAAS模式以云端服务的形式提供MES系统,而本地化部署则将系统部署在企业自身的服务器上。…

java.awt.HeadlessException

java.awt.HeadlessException异常 原因 从异常信息可以看到HeadlessExeption是项目开启了Headless模式,在这中模式下系统就会缺少其他设备的支持。 解决方法 在程序的入口类里修改成以下代码即可: 原有 public static void main(String[] args){Spring…

基于单片机智能汽车仪表设计系统

基于单片机的汽车智能仪表的设计 摘要:汽车的汽车系统。速度测量以及调速是我们这次的设计所要研究的对象,本次设计的基础核心的模块就是单片机,其应用的核心的控制单元就是stc89c52单片机,用到的测速模块是霍尔传感器&#xff0c…

类别不均衡,离群点以及分布改变

原文:Class Imbalance, Outliers, and Distribution Shift Introduction to Data-Centric AI 这节课是关于真实世界中机器学习的数据中出现的三大问题:类别不均衡,离群点以及分布改变。 类别不均衡: 现实世界的分类问题中常常会…

《商用密码应用安全性评估管理办法》发布,沃通CA助力商用密码改造

2023年10月7日,国家密码管理局公布了《商用密码应用安全性评估管理办法》(国家密码管理局令第3号)(以下简称《办法》),《办法》已经在国家密码管理局局务会议审议通过,自2023年11月1日起施行。 …

Excel 的单元格内容和单元格格式

文章目录 单元格内容单元格格式常规格式数字格式 单元格内容 文本:只要不是纯数字,Excel 都默认是文本格式。 在 Excel 中,逻辑值只有两个:True 和 False。 全选一片区域,按 Delet 键删除内容时,确实可以删…