vue.config.js跨域问题解决

news2024/12/25 23:55:25

讲解视频

问题背景

目标地址:
在这里插入图片描述
而当前项目启动是http,协议名不同,所以跨域了

解决步骤和解答

1. 新建vue.config.js文件

2. 添加如下代码:

一般目标路径target写 域名 就可以了

在这里插入图片描述

但其实,写路径也可以,不写路径也可以,没有强制的要求

  • 写路径,就要替换
    在这里插入图片描述

  • 不写路径就不用替换

3. 配置好后,修改访问方式

修改前:
在这里插入图片描述修改后:

在这里插入图片描述

重写域名pathRewrite,指的是把
在这里插入图片描述里面的api替换成空,而不是目标路径尾部的api换成空

  • 修改了,需要替换的情况
    在这里插入图片描述

  • 没修改,不需要替换的情况
    在这里插入图片描述
    明白了这一点,我的项目也可以替换成:
    在这里插入图片描述

记录一下自己的疑惑(跨域问题)

代码介绍

vite.config.js 配置代理服务器

  server: {
    proxy: {
      '/tyqw': {
        //   '/api/v1/services/aigc/text-generation/generation': {

        // target: 'https://dashscope.aliyuncs.com' // 目标服务器地址
        // target: 'http://localhost:3000' // 目标服务器地址
        target: 'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation/', // 目标服务器地址

        changeOrigin: true, // 是否改变源地址
        rewrite: (path) => path.replace(/^\/tyqw/, '') // 重写路径
      },
      '/xfxh': {
        //   '/api/v1/services/aigc/text-generation/generation': {

        // target: 'https://dashscope.aliyuncs.com' // 目标服务器地址
        // target: 'http://localhost:3000' // 目标服务器地址
        target:
          'https://spark-api.xf-yun.com/v1.1/chat?authorization=YXBpX2tleT0nMjhlNDIwNzBhOWZjNTIzMjgyMjRjYjQwZGEzYjdiZTYnLCBhbGdvcml0aG09J2htYWMtc2hhMjU2JywgaGVhZGVycz0naG9zdCBkYXRlIHJlcXVlc3QtbGluZScsIHNpZ25hdHVyZT0nMzBuU1ByMjZvZHpRa2YrdVdLdC8rb3BPZ2Jzd1FSWXlzVjRrd3ExQTJERT0n&date=Sun%2C+31+Mar+2024+09%3A29%3A25+GMT&host=127.0.0.1%3A5173', // 目标服务器地址

        changeOrigin: true, // 是否改变源地址
        rewrite: (path) => path.replace(/^\/tyqw/, '') // 重写路径
      }
    }
  }

然后修改请求地址

 .post('tyqw', data, config)
    // .post('/tyqw', data, config)
    //   '/api/v1/services/aigc/text-generation/generation': {

    .then((response) => {

问题1:.post(‘tyqw’, data, config)

.post('tyqw', data, config)
 .post('/tyqw', data, config)

这两种写法都可以吗,为什么

在发送网络请求时,.post('tyqw', data, config).post('/tyqw', data, config) 这两种写法的含义是不同的,主要取决于你的应用程序的基本路径和路由设置。

  1. .post('tyqw', data, config): 这种写法是相对路径的写法,表示发送 POST 请求到当前页面的基本路径下的 tyqw 路径。如果你的当前页面的基本路径为 http://example.com/myapp/,那么这个请求实际上是发送到 http://example.com/myapp/tyqw

  2. .post('/tyqw', data, config): 这种写法是绝对路径的写法,表示发送 POST 请求到根路径下的 tyqw 路径。无论当前页面的路径是什么,都会发送请求到 http://example.com/tyqw

这两种写法都可以,取决于你的需求和项目的配置。使用相对路径可以使得你的代码更加灵活,而使用绝对路径可以保证请求的准确性,不会受到页面路径的影响。

需要注意的是,对于前端单页应用(SPA)等情况下,通常会使用绝对路径来发送请求,以确保路由切换时能够正确地发送请求到后端 API。

这也就是为什么我这两种写法都没有报错,因为我的路由是跟路径,所以不管是相对还是绝对路径,都是一样的

问题2: target: ‘https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation/’

target: ‘https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation/’, // 目标服务器地址
改成
target: ‘https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation’, // 目标服务器地址
会有影响吗,这两种写法有什么区别

在目标服务器地址的最后是否包含斜杠 / 会对请求产生影响,这取决于服务器的配置和预期的行为。下面是这两种写法的区别:

  1. 'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation/':这种写法表示目标服务器地址以斜杠结尾。当发送请求时,如果请求中的路径没有指定具体的文件或资源,服务器可能会做重定向处理,将请求重定向到一个类似于 'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation/index.html' 的具体资源上。

  2. 'https://dashscope.aliyuncs.com/api/v1/services/aigc/text-generation/generation':这种写法表示目标服务器地址没有斜杠结尾。在这种情况下,请求将直接发送到指定的路径,不会触发重定向行为。

如果目标服务器的配置能够处理这两种情况并且行为一致,那么这两种写法不会有太大影响。但如果服务器的配置或行为有所不同,这两种写法可能会导致不同的结果。通常建议根据服务器的实际行为来选择适当的写法。

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

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

相关文章

移动应用安全合规动态:网信办、金管局发文强调数据安全;3月个人信息违规抽查结果出炉!(第五期)

一、监管部门动向:国家互联网信息办公室公布《促进和规范数据跨境流动规定》; 工信部发布《关于网络安全保险典型服务方案目录的公示》 二、安全新闻:恶意软件警报!黑客利用软件即服务攻击印度安卓用户;Cerberus银行恶意软件的虚…

Linux内核常见的丢包场景有哪些

目录 摘要 1 收发包处理流程 2 硬件网卡相关 2.1 ring buffer满 2.2 利用 ntuple 保证关键业务 3 arp丢包 3.1 neighbor table overflow 3.2 unresolved drops 4 conntrack丢包:nf_conntrack: table full 5 udp接收buffer满 6 丢包定位 6.1 dropwatch 查看丢包 6.2…

ERROR 1052 (23000): Column ‘deptno‘ in field list is ambiguous

错误原因: 这个错误通常是在多表查询中,因为你的SQL查询中包含了多个表,并且这些表中都有一个名为deptno的列。这会导致数据库无法确定你要引用哪个表中的 deptno列,从而产生歧义。 解决方法: 为了解决这个问…

【数据结构(六)】队列

❣博主主页: 33的博客❣ ▶️文章专栏分类:数据结构◀️ 🚚我的代码仓库: 33的代码仓库🚚 🫵🫵🫵关注我带你学更多数据结构知识 目录 1.前言2.概念3.队列的使用4.循环队列5.双端队列6.经典习题6.1队列实现栈6.2栈实现队…

Windows Edge 兼容性问题修复:提升用户体验的关键步骤

🌟 前言 欢迎来到我的技术小宇宙!🌌 这里不仅是我记录技术点滴的后花园,也是我分享学习心得和项目经验的乐园。📚 无论你是技术小白还是资深大牛,这里总有一些内容能触动你的好奇心。🔍 &#x…

Laravel/Lumen 中使用 Echo + Socket.IO-Client 实现网页即时通讯广播

此处以 Lumen 9 框架为例说明如何调试通过 Echo 服务端以及客户端 如果你是 Laravel/Lumen 10.47 用户,可以先了解官方的 Laravel Reverb。注意 Laravel Reverb 仅支持 Laravel/Lumen 10.47 以及 PHP 8.2Laravel Reverb 参考官网:https://laravel.com/d…

【C 数据结构】双向链表

文章目录 【 1. 基本原理 】【 2. 双向链表的 创建 】实例 - 输出双向链表 【 3. 双向链表 添加节点 】【 4. 双向链表 删除节点 】【 5. 双向链表查找节点 】【 7. 双向链表更改节点 】【 8. 实例 - 双向链表的 增删查改 】 【 1. 基本原理 】 表中各节点中都只包含一个指针&…

排序算法-基数排序

基数排序是一种非比较排序算法,它将待排序的数字按照位数进行排序。基数排序的思想是先按照个位数进行排序,然后按照十位数进行排序,接着按照百位数进行排序,以此类推,直到最高位排序完成。 基数排序的步骤如下&#x…

【Java】xxl-job的快速入门

目录 什么是xxl-job? XXL-Job-环境搭建 1 调度中心环境要求 2.XXL-Job(源码说明) 3.初始化“调度数据库” 3启动调度中心xxl-job-admin docker安装-配置调度中心 1.创建mysql容器,初始化xxl-job的SQL脚本 2.拉取镜像 3.创建容器 xxl-jo…

手机号三要素实名验证,为您打造安全可靠的账户环境

在互联网时代,手机号码成为了我们生活中必不可少的一部分。我们几乎所有的社交账号、银行账号、网购账号,都需要绑定手机号码进行认证。然而,随着互联网的发展,越来越多的账号被盗用、个人信息被泄露的案例频频发生,让…

ros2 launch gazebo_ros gazebo.launch.py无法启动

我的系统是ubuntu20.04,ros2的版本是humble,当运行gazebo仿真时,运行 ros2 launch gazebo_ros gazebo.launch.py命令,会出现以下问题: 此时,这个页面会卡死在第六行,gazebo也不会打开 但最后单…

软件无线电安全之HackRF One初探

HackRF介绍 HackRF是一款开源软件无线电(SDR)平台,由Great Scott Gadgets公司推出。它具有广泛的频率覆盖范围,从1 MHz到6 GHz,支持大部分常见的无线通信频段。采用软件定义无线电技术,HackRF提供了自定义…

香港服务器如何更换域名?

更换香港服务器的域名是一个相对复杂的过程,涉及到多个步骤和注意事项。 准备工作: 备份网站数据:在进行任何更改之前,务必备份您的网站数据,以防止数据丢失或损坏。 购买新的域名:如果您还没有购买新的…

职场如何有效学习充电

在现在的工作中,需要接触和了解各式各样的内容,但很多时候我自己没遇到过。而平时有感觉没什么时间,因此产生了这个疑问,看完这个课程后,对这块有了较为体系化的了解。 对我来说,学习的最终目的是充实自己…

【AI 斯坦福 STORM】基于互联网搜索,帮你从零开始撰写文章

今天介绍斯坦福出品的系统,STORM。 STORM是一个基于互联网搜索的LLM系统,可以从零开始撰写类似维基百科的文章。 技术栈: dspy 一个用于算法优化LM提示和权重的框架You.com搜索API YOU APIs利用实时网络数据使LLMs和搜索体验更加真实和及时…

力扣 | 148. 排序链表

和数组里面的归并排序思想一致 class Solution {public ListNode sortList(ListNode head) {//过滤条件if(head null || head.next null)return head;ListNode slow head;ListNode fast head.next;while (fast ! null && fast.next ! null){slow slow.next;fast …

【Maven工具】

maven Maven是一个主要用于Java项目的构建自动化工具。它有助于管理构建过程,包括编译源代码、运行测试、将编译后的代码打包成JAR文件以及管理依赖项。Maven使用项目对象模型(POM)文件来描述项目配置和依赖关系。 Maven通过提供标准的项目…

酷开系统让用户在方方面面享受科技进步带来的美好体验

电视本身的特性,再有人工智能和全时AI的加持,让搭载了酷开系统的电视有能力成为一个“家庭智慧管控中心”。互联网的存在让大家能更懒地完成事情,满足宅家的愿望,有话说,科技因懒人而进步。打个简单的比方,…

手机照片删除了怎么恢复?恢复iPhone照片,试试这4招

当手机上的珍贵照片意外被删除时,让人心急如焚。幸运的是,对于使用iPhone的用户来说,恢复被删除的照片并不是一件难事。即使你不小心删除了照片,仍然有一些方法可以尝试将它们找回。手机照片删除了怎么恢复?在本文中&a…

计算机网络—传输层UDP协议:原理、应用

​ 🎬慕斯主页:修仙—别有洞天 ♈️今日夜电波:2月のセプテンバー 1:21━━━━━━️💟──────── 5:21 🔄 ◀️ ⏸ ▶️ ☰ &am…