浏览器跨域-原因及解决方案

news2025/7/19 3:23:24

1.浏览器跨域

如何判断一个浏览器的请求是否跨域?

在A地址(发起请求的页面地址)向B地址(要请求的目标页面地址)发起请求时,

如果A地址和B地址在: 协议 域名 端口  不全相同,则说明请求是跨域的;

跨域请求在浏览器中是非常常见的现象!

 

2.跨域请报错的原因

请求是跨域的,并不一定会报错。普通的图片请求,css文件请求是不会报错的

跨域请求出现错误的条件: 浏览器同源策略  &&  请求类型是ajax类型

解决方案

三种解决方法

  • 前端用JSONP方式去发请求(jsonp不是ajax请求)
  • 后端写代码(CORS)在响应中添加必要的响应头,让响应回来之后浏览器不报错
  • 代理转发

                                                         代理转发的图示

 

(方法三)跨域-Vue-Cli配置代理转发

(1).vue-cli中集成的跨域解决方案

思路:

  1. vue-cli脚手架工具在启动时,会开启一个前端项目的服务器。在同一局域网中的用户都可以通过ip地址来访问。
  2. vue-cli脚手架支持配置一个代理: 将指定的类型请求,转发到目标服务器。

  1. 代理服务和前端服务之间由于协议域名端口三者统一不存在跨域问题,可以直接发送请求
  2. 代理服务和后端服务之间由于并不经过浏览器没有同源策略的限制,可以直接发送请求

(2).vue-cli解决跨域配置说明

vue.config.js配文件中,有一项是devServer,它就是我们下边要操作的主角。

 

module.exports = {
  devServer: {
    // ... 省略
    // 代理配置
    proxy: {
        // 如果请求地址以/api打头,就出触发代理机制
        // http://localhost:9588/api/login -> http://线上的地址/api/login
        '/api': {
          target: 'http://线上的地址' // 我们要代理的真实接口地址
        }
      }
    }
  }
}

(3).去掉axios基地址(request.js)

({
  timeout: 5000
	// baseURL: ''
})

(4).重启项目,验证结果

  1. 修改了配置文件,一定要重启前端项目
  2. 再次测试登陆接口,我们发现:跨域问题已经解决了

小结

  1. vue-cli集成了跨域代理功能------ 只能用在开发阶段
  2. vue.config.js文件中,在devServe下按指定格式配置了proxy,再重启项目即可。

特别强调:

axios的基地址baseUrl必须是相对地址,而不能是绝对地址

总结:跨域代理100问

  1. ,接口跨域找谁解决? 答:后端。
  2. devSer中的proxy能不能在上线之后使用? 答:不能。因为打包之后得到的就是普通的js,html文件,不再享受webpack server的服务了。
  3. 场景:前端项目的服务器的地址:http://localhost:3003,它访问的接口是http://www.abc.com/api/getinfo。
    1. 问:如果这个接口处理了跨域,问,我们需要做代理吗? 答:不需要。此时发ajax请求在network中看到是: http://www.abc.com/api/getinfo
    2. 问: 如果这个接口没有处理跨域,需要我们做代理。做了代理之后,network中看到的地址是:http://localhost:3003/api/getinfo
  1. 整体流程

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

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

相关文章

太神了!开源大佬的SpringBoot+微服务架构笔记,一般人真肝不出来

时间飞逝,转眼间毕业七年多,从事 Java 开发也六年了。我在想,也是时候将自己的 Java 整理成一套体系。 这一次的知识体系面试题涉及到 Java 知识部分、性能优化、微服务、并发编程、开源框架、分布式等多个方面的知识点。 写这一套 Java 面试…

Category (mathematics)

In mathematics, a category (sometimes called an abstract category to distinguish it from a concrete category) is a collection of “objects” that are linked by “arrows”. A category has two basic properties: the ability to compose the arrows associatively…

51单片机实训day2——创建Proteus工程以及Proteus基本控件的使用|单片机最小系统电路设计:电源配置 复位电路 晶振电路

以管理员身份打开软件!!!以管理员身份打开软件!!!以管理员身份打开软件!!! 内 容:Proteus工程创建 学 时:2学时 知识点:熟悉Proteu…

AbstractProcessor相关的API记录

java文件操作相关的两个类: JCTree 树节点、TreeMaker 树节点构建器。 JCTree JCTree的一个子类就是java语法中的一个节点,类、方法、字段等这些都被封装成了一个JCTree子类。 JCTree详细的介绍:抽象语法树AST的全面解析(二&…

【数据驱动测试】从方法探研到最佳实践

导读 在自动化测试实践中,测试数据是制造测试场景的必要条件,本文主要讲述了在沟通自动化框架如何分层,数据如何存储,以及基于单元测试pytest下如何执行。并通过实践案例分享,提供数据驱动测试的具体落地方案。 基本…

训练yolo系列+deepsort模式的跟踪器(一):训练deepsort

由于是检测+跟踪模式,因此检测器和跟踪器是分开训练的。本节中我们先手把手的训练deepsort跟踪器。在此要感谢mikel大佬所提供的源码,由于代码更新的比较频繁,各种版本错误和运行错误在本节中会重点说明。mikel-brostrom/Yolov5_StrongSORT_OSNet: Mult-object tracking and…

python之环境切换问题实践总结

前言 这个标题是实践总结,为什么呢,因为这个问题困扰了我整整一个月,都没有解决。现在终于解决了,写一篇文章记录一下,也看看有没有小伙伴遇到一样的问题,或者在我下次还会发生这样的实情事可以第一时间解…

GAMES101 Assignment 3

前言 通过阅读实验提供的代码框架,可以加深对渲染管线的理解。assignment1,2我并没有做,我们课程图形学本来有实验计划,然而老师专门让我们做GAMES101的这个实验,其意义可见一斑。 阅读过程中遇到许多困难,看了许多资…

线性杂双功能PEG试剂Biotin-PEG-Silane,Silane-PEG-Biotin,生物素-PEG-硅烷

英文名称:Biotin-PEG-Silane,Silane-PEG-Biotin 中文名称:生物素-聚乙二醇-硅烷 生物素-PEG-硅烷是一种含有生物素和硅烷的线性杂双功能PEG试剂。它是一种有用的带有PEG间隔基的交联或生物结合试剂。生物素能与亲和素和链霉亲和素结合&…

多期DID和事件研究法含文献和do代码

多期DID和事件研究法含文献和do代码 1、方法:多期DID 2来源:JDE发表的一篇多期DID和事件研究法相关的文章, 文章名为为"Here waits the bride? The effect of Ethiopias child marriage law"。 3、数据内容:数据包…

钱为什么会贬值?

一、什么是钱贬值? 当我们在谈钱贬值的时候,我们是在说什么? 是指的今天5块钱可以买5个苹果,1个月后5块钱只可以买3个苹果.(以商品为评价基准) 是指的今天1美元可以换6元人民币,1个月后1美元…

数据库实验5 数据库设计实验

前言:不知道啥原因,最后设计出来少了一个表,无语 实验5 数据库设计实验 1.实验目的 掌握数据库设计基本方法及数据库设计工具。 2.实验内容和要求 掌握数据库设计基本步骤,包括数据库概念结构设计、逻辑结构设计,物理结构设计,数据库模式…

Flarum部署:从源码到docker到放弃

警告: 此篇文章前半段记录了我用代码部署flarum遇到的一些问题和解决办法,但是可能是由于我是在不熟悉php的框架结构,最终我还是选择了使用docker进行部署,请斟酌是否继续阅读本文。 Hello,大家好,我是内网…

开源项目-OA自动化管理系统

哈喽,大家好啊,今天给大家带来一个开源系统-办公自动化管理系统 简介: OA( Office Automation System)办公自动化系统是一个企业用来管理日常事务的系统,它一般用来管理各种流程(报销、请假. . .)审批,通讯…

Fabric.js 元素中心缩放

本文简介 点赞 关注 收藏 学会了 使用 fabric.js 创建的图形,默认的缩放原点是元素操作点的对角点。 如下图所示: 如果按住 alt 键 操作会把原点移动到元素中心。 如下图所示: 如果想将默认缩放操作设置为“中心缩放”,只需…

ImportError: DLL load failed while importing etree: 找不到指定的模块。

目录标题前言错误描述报错代码如下:原因:解决办法前言 今天我正在悠闲的逛着网站寻找今天要爬取的目标当我找到目标的时候正要创建我的scrapy爬虫文件的时候竟然报错了我很惊讶😮😮😮!!&#x…

安全分析模型核心服务部署

安全分析模型核心服务部署 ModelOps 对所有的人工智能 模型(图形模型、语言模型、基于规则的模型)以及决策模型的整个生命周期 进行管理,确保对生产中的所有模型进行独立验证和问责,其核心功能涵盖了模型存储、模型测试、模型回滚…

非零基础自学Golang 第15章 Go命令行工具 15.6 性能分析 15.6.1 安装Graphviz

非零基础自学Golang 文章目录非零基础自学Golang第15章 Go命令行工具15.6 性能分析15.6.1 安装Graphviz第15章 Go命令行工具 15.6 性能分析 性能分析和调优是一种强大的技术,用于验证是否满足实际性能要求。 Go语言支持使用go tool pprof工具进行性能查看及调优。…

DNS协议分析

上一篇文章从工作原理角度分析了DNS的作用与意义,这次来看看DNS到底是以什么形式进行通信的。 DNS报文格式如下所示: DNS报文由12字节长的首部和4个长度可变的字段组成。 1.标识,由主机端设置,为的是唯一标识当前DNS报文。 2.1…

关于Docker入门

目录 1.Docker简介 2.Centos7安装Docker 3.Docker HelloWorld运行原理解析 4.阿里云镜像仓库 5.Docker命令 Docker基本命令 Docker镜像常用命令 Docker 容器常用命令 1.Docker简介 Docker 是一个开源的应用容器引擎,基于 Go 语言 并遵从Apache2.0协议开源 Doc…