当前位置: 首页 > news >正文

跨域的解决方案

文章目录

  • 概念
    • 一、什么是跨域问题
    • 二、为什么会发生跨域问题
    • 三、跨域解决方案
      • 1、JSONP
      • 2、添加响应头
      • 3、Spring注解@CrossOrigin
      • 4、配置文件(常用)
      • 5、nginx跨域

概念

一、什么是跨域问题

前端调用的后端接口不属于同一个域(域名或端口不同),就会产生跨域问题,也就是说你的应用访问了该应用域名或端口之外的域名或端口。

通俗的说:当一个请求url的协议、域名、端口三者之间任意一个与当前页面url不同即为跨域

在这里插入图片描述

二、为什么会发生跨域问题

出于浏览器的同源策略限制。

同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。

三、跨域解决方案

1、JSONP

  • 实现原理JSONP请求的类型是JavaScript脚本(callback 作为前后端的约定,callback的值做为方法名,json内容作为方法的参数),而XHR请求的类型是json类型。

  • JSONP 的缺点

    1、只支持 GET 方法请求,不管 AJAX 中实际的请求方法是不是 GET

    2、服务端还需要修改代码

    3、发送的不是 XHR 请求,无法使用 XHR 对象(但这也是为什么可以解决跨域问题的根本)

    总之,并不推荐使用 JSONP 方式来解决跨域问题。

2、添加响应头

​ 在controller方法中,写响应头信息。

​ response.addHeader(“Access-Control-Allow-Origin”,“http://127.0.0.1:8082”);

3、Spring注解@CrossOrigin

在controller方法上添加注解

@CrossOrigin(origins = {“http://127.0.0.1:8082”})

4、配置文件(常用)

package com.linjiu.demo.config;import org.springframework.stereotype.Component;import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;@Component
public class HttpFilter implements Filter {/***CROS跨域常用headerAccess-Control-Allow-Origin: 允许哪些ip或域名可以跨域访问Access-Control-Max-Age: 表示在多少秒之内不需要重复校验该请求的跨域访问权限Access-Control-Allow-Methods: 表示允许跨域请求的HTTP方法,如:GET,POST,PUT,DELETEAccess-Control-Allow-Headers: 表示访问请求中允许携带哪些Header信息,如:Accept、Accept-Language、Content-Language、Content-Type*/@Overridepublic void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {//*号表示对所有请求都允许跨域访问HttpServletResponse res = (HttpServletResponse) response;res.addHeader("Access-Control-Allow-Credentials", "true");res.addHeader("Access-Control-Allow-Origin", "*");res.addHeader("Access-Control-Allow-Methods", "GET, POST, DELETE, PUT");res.addHeader("Access-Control-Allow-Headers", "Content-Type,X-CAF-Authorization-Token,sessionToken,X-TOKEN");if (((HttpServletRequest) request).getMethod().equals("OPTIONS")) {response.getWriter().println("Success");return;}chain.doFilter(request, response);}@Overridepublic void init(FilterConfig filterConfig) throws ServletException {}@Overridepublic void destroy() {}
}

5、nginx跨域

一般解决的是前端静态页面在不同服务器之间的访问。

# 在server下添加配置文件#允许跨域请求的域,* 代表所有add_header 'Access-Control-Allow-Origin' *;#允许带上cookie请求add_header 'Access-Control-Allow-Credentials' 'true';#允许请求的方法,比如 GET/POST/PUT/DELETEadd_header 'Access-Control-Allow-Methods' *;#允许请求的headeradd_header 'Access-Control-Allow-Headers' *;

在这里插入图片描述

相关文章:

跨域的解决方案

文章目录 概念一、什么是跨域问题二、为什么会发生跨域问题三、跨域解决方案1、JSONP2、添加响应头3、Spring注解CrossOrigin4、配置文件(常用)5、nginx跨域 概念 一、什么是跨域问题 前端调用的后端接口不属于同一个域(域名或端口不同&…...

如何使用Java语言判断出geek是字符串参数类型,888是整数参数类型,[hello,world]是数组参数类型,2.5是双精度浮点数类型?

如何使用Java语言判断出geek是字符串参数类型,888是整数参数类型,[hello,world]是数组参数类型,2.5是双精度浮点数类型? Java是一种静态类型的编程语言,这意味着我们需要在编译时为变量指定具体的类型。但是&#xff…...

9.20华为机试-后端

1、丢失报文的位置 某通信系统持续向外发送报文,使用数组 nums 保存 n个最近发送的报文,用于在报文未达到对端的情况下重发。报文使用序号 sn 表示,序号 sn 按照报文发送顺序从小到大排序,相邻报文 sn 不完全连续且有可能相同。报…...

LC926. 将字符串翻转到单调递增(JAVA - 动态规划)

将字符串翻转到单调递增 题目描述动态规划 题目描述 难度 - 中等 LC926. 将字符串翻转到单调递增(JAVA - 动态规划) 如果一个二进制字符串,是以一些 0(可能没有 0)后面跟着一些 1(也可能没有 1)的形式组成的&#xff0…...

【高阶数据结构】哈希的应用 {位图;std::bitset;位图的应用;布隆过滤器;布隆过滤器的应用}

一、位图 1.1 位图概念 面试题 给40亿个不重复的无符号整数,没排过序。给一个无符号整数,如何快速判断一个数是否在这40亿个数中。【腾讯】 遍历查找:内存中无法存放40亿个整数(约占内存15-16G);时间复杂…...

金融生产存储亚健康治理:升级亚健康 3.0 ,应对万盘规模的挑战

随着集群规模的不断扩大,硬盘数量指数级上升,信创 CPU 和操作系统、硬盘多年老化、物理搬迁等多种复杂因素叠加,为企业的存储亚健康管理增加了新的挑战。 在亚健康 2.0 的基础上,星辰天合在 XSKY SDS V6.2 实现了亚健康 3.0&#…...

C语言自定义类型讲解:结构体,枚举,联合(2)

🐵本篇文章将会对位段、枚举和联合的相关知识进行讲解 1. 位段📚 1.1 什么是位段 位段的声明和结构体类似,但是有两点不同: 1.位段的成员必须是int,unsigned int,signed int (C99之后也可以是其他成员&am…...

AI编程助手 Amazon CodeWhisperer 全面解析与实践

目录 引言Amazon CodeWhisperer简介智能编程助手智能代码建议代码自动补全 提升代码质量代码质量提升安全性检测 支持多平台多语言 用户体验和系统兼容性用户体验文档和学习资源个性化体验系统兼容性 功能全面性和代码质量功能全面性代码生成质量和代码安全性 CodeWhisperer的代…...

利用EXCEL进行XXE攻击

利用EXCEL进行XXE攻击 原因 原因 Microsoft Office从2007版本引入了新的开放的XML文件格式,新的XML文件格式基于压缩的ZIP文件格式规范,由许多部分组成。 我们可以将其解压缩到特定的文件夹中来查看其包含的文件夹和文件,可以发现其中多数是…...

芯片验证就是一次旅行

如果你国庆希望去一个你不曾去过的城市旅行,比如“中国苏州”。对游客来说,它是个蛮大的城市,有许多景点可以游玩,还有许多事情可以做。但实际上,即使最豪也最清闲的游客也很难看苏州的所有方方面面。同样的道理也适用…...

Java深入理解线程的三大特性

目录 1 CPU缓存导致可见性问题2 线程切换导致原子性问题3 性能优化导致有序性问题4 JMM(Java Memory Model)5 volatile6 synchronized 1 CPU缓存导致可见性问题 线程的三大特性: 可见性:Visibility有序性:Ordering原子性:Atomic…...

2025快手校招面试真题汇总及其解答(二)

6. hashmap数据结构 HashMap 是一种散列表,它是一种根据键值对来存储数据的数据结构。HashMap 的特点是插入、查找和删除操作的时间复杂度都是 O(1),因此它是一种非常高效的数据结构。 HashMap 的工作原理是将键值对存储在一个数组中,每个键值对都由一个哈希函数来映射到数…...

PHP生成带中文的图片

imagettftext() 函数是 PHP 中的一个内置函数,用于使用 TrueType 字体将文本写入图像。 句法: 数组imagettftext(资源$image,float $size,float $angle, int $x,int $y,…...

java框架-Dubbo

Dubbo整合Springboot BIO NIO Netty Dubbo 原理 在这里插入图片描述...

Vue+iview 组件中通过v-for循环动态生成form表单进行表单校验

在做项目时,需要根据需要动态添加或新增表单,同时还需要对表单做校验。详情如下图: 刚开始做表单验证的时候,对于这个动态的表单验证有点难搞,试了好几种方法都没有搞定。最后按照下面这种方法实现了,以此…...

sns.load_dataset(“iris“)报错原因探究+解决办法

问题描述 import seaborn as sns # 读取数据 iris sns.load_dataset("iris")在代码中使用了seaborn ,并加载iris数据,结果产生了报错信息如下所示 问题分析 原因很简单,我们使用了sns.load_dataset("iris")来加载数据…...

python回文素数

这能有1和本身整除的整数叫素数;如一个素数从左向右和从右向左是相同的数,则该素数为回文素数。编程求出2-1000内的所有回文素数。 源代码: def sushu(n): for i in range(2,n//21): if n%i 0: return False r…...

纽扣电池16CRF1700.15,16CFR1700.20,ANSI C18.3M如何申请?

随着科技的发展,纽扣电池被广泛应用于小型电子产品,如计算器、电子手表、玩具、医疗设备等。由于其体积小,易于拆卸,也造成了儿童误吞的潜在风险。因此,对于纽扣电池的认证和包装,各国均有相应的规定。 在美…...

10.12广州见 | 第十六届智慧城市大会报名通道全面开启

第十六届中国智慧城市大会 将于10月12日至13日 在广州举办 智慧城市是数字中国、智慧社会的核心载体,是数字时代城市发展的高级形态。由中国服务贸易协会、中国测绘学会、中国遥感委员会主办的第十六届中国智慧城市大会,将以“数实融合开放创新智引未…...

2023-油猴(Tampermonkey)脚本推荐

2023-油猴(Tampermonkey)脚本推荐 知乎增强 链接 https://github.com/XIU2/UserScript https://greasyfork.org/zh-CN/scripts/419081 介绍 移除登录弹窗、屏蔽首页视频、默认收起回答、快捷收起回答/评论(左键两侧)、快捷回…...

Claude Code Ultraplan 远程多代理规划全解析:AI Agent、CCR远程容器、异步规划、状态机、计划传送与企业级自动化治理

一、先说结论:Ultraplan 到底解决了什么痛点?Ultraplan 可以理解为一种“远程规划模式”:用户在本地终端发起一个复杂任务,系统把规划阶段卸载到远程 CCR 容器中执行。本地终端不再被长时间占住,远程端可以使用更强模型…...

Consul-K8s实战:Kubernetes与Consul服务网格的无缝集成指南

1. 项目概述:当Consul遇见Kubernetes如果你正在Kubernetes集群里管理微服务,并且已经听说过或者正在使用HashiCorp Consul来做服务发现和配置管理,那么hashicorp/consul-k8s这个项目绝对是你绕不开的工具。简单来说,它不是一个独立…...

鸿蒙 HarmonyOS 6.0 页面构建实践:跨端数字图书馆界面实现

鸿蒙 HarmonyOS 6.0 页面构建实践:跨端数字图书馆界面实现 前言 随着移动互联网和物联网的高速发展,跨端应用开发已成为现代软件开发的重要趋势。开发者不仅需要在手机端提供流畅的用户体验,还需要兼顾平板、电视等多终端的适配问题。在这样的…...

Real-is-Sim框架:动态数字孪生在机器人控制中的创新应用

1. Real-is-Sim框架概述:动态数字孪生的创新实践在机器人控制领域,仿真到现实的迁移(sim-to-real)一直是个棘手难题。传统方法往往面临"仿真太完美,现实太复杂"的困境——在虚拟环境中训练的策略&#xff0c…...

Python封装币安API:从零构建Binance-Claw量化数据工具

1. 项目概述与核心价值最近在GitHub上看到一个挺有意思的项目,叫“Binance-Claw”,作者是Scandalousnessmotley216。光看这个名字,可能有点摸不着头脑,“Claw”是爪子的意思,难道是要“抓取”币安的数据?点…...

多语言支持秘籍:validatorjs国际化错误消息配置终极指南

多语言支持秘籍:validatorjs国际化错误消息配置终极指南 【免费下载链接】validatorjs A data validation library in JavaScript for the browser and Node.js, inspired by Laravels Validator. 项目地址: https://gitcode.com/gh_mirrors/va/validatorjs …...

【依赖冲突实战】Java NoSuchFieldError:从版本地狱到优雅解决

1. 当Java程序突然崩溃:NoSuchFieldError的典型症状 那天下午我正在调试一个微服务项目,突然控制台抛出个鲜红的异常: java.lang.NoSuchFieldError: MAX_RETRY_COUNT这个错误看似简单,却让我花了三小时才找到根源。项目里明明有MA…...

NotebookLM脑机接口安全红线清单,3类合规风险已致2家医疗AI公司终止临床试验

更多请点击: https://intelliparadigm.com 第一章:NotebookLM脑机接口研究 NotebookLM 是 Google 推出的基于用户自有文档进行深度理解与推理的 AI 助手,其核心能力在于语义锚定(semantic grounding)与多源文档交叉推…...

解决Claude Code频繁封号问题转向Taotoken稳定服务的配置指南

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 解决Claude Code频繁封号问题转向Taotoken稳定服务的配置指南 如果你在使用 Claude Code 时遇到了账号不稳定或 Token 额度受限的问…...

FFXIV TexTools:终极《最终幻想14》模组管理完全指南

FFXIV TexTools:终极《最终幻想14》模组管理完全指南 【免费下载链接】FFXIV_TexTools_UI 项目地址: https://gitcode.com/gh_mirrors/ff/FFXIV_TexTools_UI FFXIV TexTools 是一款为《最终幻想14》玩家量身打造的开源模组管理框架,让游戏外观定…...