问题解决:跨域访问错误
今天做前端页面渲染的时候遇到一个问题,
因为我使用的wsl开发,windows直接访问不了wsl中的文件,还要改其他配置没成功,索性就不改了,粘贴在桌面上用浏览器打开调试
然后所有使用apifox通过测试的路径全部报错
Ensure CORS response header values are valid
A cross-origin resource sharing (CORS) request was blocked because of invalid or missing response headers of the request or the associated preflight request .
To fix this issue, ensure the response to the CORS request and/or the associated preflight request are not missing headers and use valid header values.
Note that if an opaque response is sufficient, the request's mode can be set to no-cors to fetch the resource with CORS disabled; that way CORS headers are not required but the response content is inaccessible (opaque
这个错误主要是因为跨域访问导致的
什么是跨域访问
跨域访问报错的原理是浏览器的同源策略(Same-Origin Policy)。同源策略是一种安全策略,指浏览器允许在同一域名下的页面间相互访问,但禁止跨域名访问。
跨域访问的问题通常出现在客户端的 JavaScript 代码中,当 JavaScript 代码向另一个域名的服务器发起请求时,如果该域名与当前域名不同,则会触发跨域访问错误。因为浏览器出于安全考虑,不允许通过 XMLHttpRequest 或 Fetch API 发送跨域请求,除非响应中包含正确的跨域头信息(CORS)。
在服务器上的 HTML 文件也可能遇到跨域问题。比如,如果 HTML 文件中包含了从不同域名加载的资源,比如图片、CSS 或 JavaScript 文件,如果服务器未正确设置跨域头信息,那么这些资源的请求也可能会被浏览器拦截。
通常情况下,在服务器端设置正确的跨域头信息(CORS)可以解决跨域问题。同时,也可以使用 JSONP、代理、WebSocket 等技术绕过浏览器的同源策略。
简单来说就是我在我的桌面的html文件中有访问wsl的域名,然后两个域名不一样,就会触发保护机制,如果这时你的服务端没有添加跨域的许可(对我来说就是添加桌面的html可以访问路径的许可),就会找不到路径返回404
问题解决,
-
第一就是不要跨域,两个域名相同(localhost或者127.0.0.1什么的),安全一点
-
第二个方法就是,添加许可,对头部信息进行设置(请求与相应都要进行设置,不然要么请求不了,要么收不到相应)
-
请求:
我们可以使用一个中间件函数来处理跨域的验证,因为如果跨域,浏览器要先发送一个请求方法为: OPTIONS的请求来判断,需要返回一个200才会发送剩下的请求,使用我们定义跨域访问许可中间件函数
// 允许跨域访问中间件
func Dfot() gee7.HandlerFunc {
return func(ctx *gee7.Context) {
// 处理预检请求
if ctx.Req.Method == "OPTIONS" {
// 验证预检请求的来源、头部字段和请求方法是否符合预期
// ...
// 设置响应头部字段
ctx.Writer.Header().Set("Access-Control-Allow-Origin", "*")
ctx.Writer.Header().Set("Access-Control-Allow-Methods", "POST, GET, OPTIONS")
ctx.Writer.Header().Set("Access-Control-Allow-Headers", "Content-Type")
// 返回状态码 200 和空响应体
ctx.Writer.WriteHeader(http.StatusOK)
return
}
}
}
我这里ctx.Writer.Header().Set("Access-Control-Allow-Origin"使用的"*"表示所有跨域路径都可以访问,为了安全起见生产环境不建议这样用
-
相应:
在相应的时候在setheader函数中添加允许跨域访问的路径(我这里嫌麻烦还是用的*)
func (c *Context) SetHeader(key string, value string) {
c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
c.Writer.Header().Set(key, value)
}
这样就解决跨域访问的的错误了
本文由 mdnice 多平台发布
相关文章:
问题解决:跨域访问错误
今天做前端页面渲染的时候遇到一个问题, 因为我使用的wsl开发,windows直接访问不了wsl中的文件,还要改其他配置没成功,索性就不改了,粘贴在桌面上用浏览器打开调试 然后所有使用apifox通过测试的路径全部报错 Ensure CORS response header values are validA cross-origin reso…...
程序员应该怎么自学才能入门 ?我来聊聊自己的经历
当你想成为一名程序员,如何自学入门是一个非常重要的问题。在这里我分享一下我的经验,希望能对你有所帮助。 首先,为了制定好你的学习路线,你可以在网上的培训机构网站找到一张基础路线图。这张路线图必须是跟行业对标的…...
听我一句劝,别去外包,干了6年,废了....
先说一下自己的情况,大专生,18年通过校招进入湖南某软件公司,干了接近6年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了6年的功能测试&…...
leetcode 88 合并两个有序数组
题目描述: 给你两个按 非递减顺序 排列的整数数组 nums1 和 nums2,另有两个整数 m 和 n ,分别表示 nums1 和 nums2 中的元素数目。 请你 合并 nums2 到 nums1 中,使合并后的数组同样按 非递减顺序 排列。 注意:最终&am…...
软件项目成本控制的5大关键点 不得不重视
软件项目成本一般分为运营成本和项目成本。而运营成本比较固定,压缩和削减的余地不大。而在项目成本中,最主要的成本是人工成本。那么如何提高项目开发效率,节约人工成本,对成本管理至关重要。 我们从以下几个影响项目成本的主要因…...
CSS样式更改:边框Border的另类用法
CSS样式更改——字体设置Font&边框Border 随着互联网技术的不断发展,网页设计已经成为了一项非常重要的工作。在网页设计中,字体设置和边框Border是两个非常常见的CSS样式,可以通过这两个样式对网页的外观进行设置。下面,我们…...
shell的灵活运用 (函数,关联数组,循环,awk,sed等)
题目 提示:没有基础请先看看基础部分的讲解,否则看不懂 1,编写函数,实现判断是否无位置参数,如无参数,提示错误 代码: #bash/bin function a() {b$# #判断传入的参数个数 # echo $b…...
大疆无人机 MobileSDK(遥控器/手机端)开发 v4版<1>
大疆无人机飞控开发 大疆无人机SDK开发包功能概述飞行控制相机实时视频流传感器数据下载媒体文件遥控器,电池和无线链路连接应用程序和产品 v4版sdk 二次开发注册成为DJI开发者生成 App KeyAndroid 示例代码配置Android Studio项目集成创建一个新的应用配置Gradle 脚…...
mysql数据库之事务
1.事务的概念 事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个 整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。 事务是一个不可分割的工作逻辑单元…...
安装运行Hyperf
安装运行Hyperf 上回讲到,我们对一个普通的 Laravel 框架进行了改造,让它可以在 Swoole 环境下使用,不过其中会有很多问题可能我们一时考虑不到,就会造成程序的稳定性出现问题。那么,今天我们就来学习一个原生的 Swoo…...
回收站文件恢复,分享4个巧妙解决方法!
案例:回收站文件怎么恢复 【清理电脑时一不小心清空了我的回收站,有朋友知道该怎么恢复吗?急急急!】 回收站对于电脑用户来说,可以带来很多的方便,能让用户能够在删除文件后将其恢复。但是,有…...
CTF权威指南 笔记 -第三章汇编基础-3.2-x86/x64汇编基础
这节介绍PC最常见的架构 x86和扩展 x64框架 CPU操作模式 对x86处理器而言 有三个最主要的保护模式 保护模式 实地址模式 系统管理模式还有一个保护模式的子模式 虚拟8086模式 保护模式 保护模式是处理原生状态 这个时候所有指令和特性都是可以使用的 分配给程序的独立内…...
争夺汽车芯片「高地」
一直以来,汽车芯片无论是工艺制程,还是新技术的导入,都要落后消费类产品几年时间。不过,如今,随着汽车智能化进一步推动汽车制造商与上游芯片设计公司、晶圆代工厂的紧密互动,历史即将翻篇。 同时…...
SuperMap GIS基础产品三维GIS FAQ集锦(2)
SuperMap GIS基础产品三维GIS FAQ集锦(2) 【WebGL】桌面对三维缓存设置了最大最小可见高度,在iServer发布三维服务并进行预览是可以看到该效果的,但在前端代码打开该服务,最大最小可见高度效果丢失,请问怎…...
11.streamFile
1.Stream流 1.1体验Stream流【理解】 案例需求 按照下面的要求完成集合的创建和遍历 创建一个集合,存储多个字符串元素把集合中所有以"张"开头的元素存储到一个新的集合把"张"开头的集合中的长度为3的元素存储到一个新的集合遍历上一步得到的集…...
如何裁剪图片大小尺寸?
如何裁剪图片大小尺寸?平时我们在工作或者学习的时候,会经常需要将图片上传到不同的网站或者平台上,然而上传的时候经常会受到尺寸的限制,有时候尺寸太大就需要变小,为了确保上传成功,我们需要将图片进行裁…...
深度学习笔记之梯度下降、反向传播与内置优化器
文章目录 1. 梯度下降法2. 反向传播算法3. PyTorch内置的优化器3.1 SGD优化器3.2 RMSprop优化器3.3 Adam优化器 1. 梯度下降法 笔者往期的机器学习笔记: 机器学习之梯度下降算法 梯度下降法是一种致力于找到函数极值点的算法。 所谓“训练”或“学习”就是改进…...
Visual Studio 2022 搭建GLFW OpenGL开发环境
最近工作需要 需要写一个全景的视频播放器 网上搜了下大概解决方案是 ffmpegopengl b站有很多视频 按照视频 搭建了OpenGL的开发环境 先去GLFW的网站下载 windows平台的库文件 为什么使用GLFW 因为GLFW是跨平台的 我下的是64位版本解压后有目录如下 包含了动态库和静态…...
四元数快速入门【Quaternion】
四元数(Quaternion)是用于旋转和拉伸向量的数学运算符。 本文提供了一个概述,以帮助理解在空间导航等应用程序中对四元数的需求。 推荐:用 NSDT场景设计器 快速搭建3D场景。 可以通过多种方式在空间中准确定位、移动和旋转物体。 …...
为什么我们要使用向量化运算
问题背景 如果你是matlab用户,你一般都会使用向量化运算进行编程。原因也许很简单,因为matlab针对向量化运算在底层做了深度优化,尤其是针对矩阵乘法调用了MKL之类的高度优化的第三库来加速。所以我们在推演算法的阶段,尽量的以向…...
RocketMQ延迟消息机制
两种延迟消息 RocketMQ中提供了两种延迟消息机制 指定固定的延迟级别 通过在Message中设定一个MessageDelayLevel参数,对应18个预设的延迟级别指定时间点的延迟级别 通过在Message中设定一个DeliverTimeMS指定一个Long类型表示的具体时间点。到了时间点后…...
k8s从入门到放弃之Ingress七层负载
k8s从入门到放弃之Ingress七层负载 在Kubernetes(简称K8s)中,Ingress是一个API对象,它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress,你可…...
Debian系统简介
目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版ÿ…...
聊聊 Pulsar:Producer 源码解析
一、前言 Apache Pulsar 是一个企业级的开源分布式消息传递平台,以其高性能、可扩展性和存储计算分离架构在消息队列和流处理领域独树一帜。在 Pulsar 的核心架构中,Producer(生产者) 是连接客户端应用与消息队列的第一步。生产者…...
前端导出带有合并单元格的列表
// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
NLP学习路线图(二十三):长短期记忆网络(LSTM)
在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...
mac 安装homebrew (nvm 及git)
mac 安装nvm 及git 万恶之源 mac 安装这些东西离不开Xcode。及homebrew 一、先说安装git步骤 通用: 方法一:使用 Homebrew 安装 Git(推荐) 步骤如下:打开终端(Terminal.app) 1.安装 Homebrew…...
基于Java+VUE+MariaDB实现(Web)仿小米商城
仿小米商城 环境安装 nodejs maven JDK11 运行 mvn clean install -DskipTestscd adminmvn spring-boot:runcd ../webmvn spring-boot:runcd ../xiaomi-store-admin-vuenpm installnpm run servecd ../xiaomi-store-vuenpm installnpm run serve 注意:运行前…...
