跨域及cors解决跨域

article/2025/10/3 15:41:03

1.什么是跨域

出于浏览器的同源策略限制。同源策略(Sameoriginpolicy)是一种约定,它是浏览器最核心也最基本的安全功能,如果缺少了同源策略,则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策略基础之上的,浏览器只是针对同源策略的一种实现。同源策略会阻止一个域的。javascript脚本和另外一个域的内容进行交互。所谓同源(即指在同一个域)就是两个页面具有相同的协议(protocol),主机(host)和端口号(port)

协议,主机(ip),端口号,这三个有一个不同就属于跨域访问

跨域访问前端和后端不设置一些东西的话,不能访问

当前页面URL被请求页面URL是否跨域原因
http://www.test.com/http://www.test.com/index.html同源(协议、域名、端口)
http://www.test.com/https://www.test.com/index.html跨域协议不同
http://www.test.com/http://www.test1.com/跨域域名不同
http://www.test.com:8080/http://www.test.com:8081/跨域端口不同

2. 跨域问题的解决方案

比较常用的3种

1.Jsonp  最早的解决方案,利用script标签可以跨域的原理实现。

        前端解决方案,不知道好不好用,

2. nginx反向代理

        思路是:利用nginx反向代理把跨域改为不跨域,支持各种请求方式

        缺点:需要在nginx进行额外配置,语义不清晰

 3.CORS【重要】

  • 规范化的跨域请求解决方案,安全可靠。

    优势:

    • 在服务端进行控制是否允许跨域,可自定义规则

    • 支持各种请求方式            

        缺点:

                会产生额外请求

cors是一种机制,这种机制通过在http头部添加字段,

通常情况下,web应用A告诉浏览器,自己有权限访问应用B

 CORS的标准定义是:通过设置http头部字段,让客户端有资格跨域访问资源。通过服务器的验证和授权之后,浏览器有责任支持这些http头部字段并且确保能够正确的施加限制。

 JSON与CORS的比较

        1.JSONP 只能实现 GET 请求,而 CORS 支持所有类型的 HTTP 请求

        2.使用 CORS ,开发者可以是使用普通的 XMLHttpRequest 发起请求和获取数据,比起 JSONP 有更好的错误处理

        3.虽然绝大多数现代的浏览器都已经支持 CORS,但是 CORS 的兼容性比不上 JSONP,一些比较老的浏览器只支持 JSONP

 3.SpringBoot通过CORS实现跨域

3.1 使用注解实现跨域

@CrossOrigin(origins = "*")
@Slf4j
@RestController
public class EmployeeController {}

@RestController
@CrossOrigin(origins = "*")//实行全局跨域
@Slf4j
public class HelloController {@Referenceprivate HelloService helloService;@GetMapping(value = "/hello",name = "测试")public ResponseEntity hello(@RequestParam String name){String hello = helloService.hello(name);return ResponseEntity.ok(hello);}}
@RestController
public class HiController {@Referenceprivate HiService hiService;@GetMapping(value = "/hi")public ResponseEntity hiName(@RequestParam String name){String respHiName = hiService.hiName(name);return ResponseEntity.ok(respHiName);}}

 我们可以看到,后端有连个controller   HiController中没有添加@CrossOrigin(origins = "*")

跨域访问试试看

 前端:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><script src="js/axios-0.18.0.js"></script>
</head>
<body><button id="hello">hello</button><button id="hi">hi</button><script>var hello = document.getElementById("hello");var hi = document.getElementById("hi");hello.onclick = function(){axios.get("http://localhost:8082/hello?name=张三").then(resp=>{alert(resp.data);})}hi.onclick = function(){axios.get("http://localhost:8082/hi?name=张三").then(resp=>{alert(resp.data);})}</script>
</body>
</html>

 

 

 首先肯定是跨域,点击hi 的话会报错,当hiController中添加@CrossOrigin(origins = "*")

就ok了

 

2.通过全局配置解决跨域请求

 如果说你有好多Controller 每一个都要配置,那么不值当的,所有可以用这种方法

@Configuration
public class DemoWebMvcConfig implements WebMvcConfigurer {@Overridepublic void addCorsMappings(CorsRegistry registry) {registry.addMapping("/**")  // 匹配了所有的URL.allowedHeaders("*")  // 允许跨域请求包含任意的头信息.allowedMethods("*")  // 设置允许的方法.allowedOrigins("*")  // 设置允许跨域请求的域名.allowCredentials(false);  // 是否允许证书,默认false}
}

 

 


http://chatgpt.dhexx.cn/article/Sns3tsZ5.shtml

相关文章

什么是跨域?如何解决跨域?

✨ 目录 &#x1f388; 什么是跨域&#x1f388; 跨域场景&#x1f388; 解决跨域的四种方式 &#x1f388; 什么是跨域 域&#xff1a; 是指浏览器不能执行其他网站的脚本跨域&#xff1a; 它是由浏览器的 同源策略 造成的,是浏览器对 JavaScript 实施的安全限制&#xff0c;…

关于跨域后端解决跨域问题

一、为什么会有跨域 出于浏览器的同源策略限制。**同源策略&#xff08;Sameoriginpolicy&#xff09;**是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;则浏览器的正常功能可能都会受到影响。同源策略会阻止一个域的ja…

什么是跨域?跨域问题怎么解决?

目录 一、什么是跨域&#xff1f; 二、为什么会出现跨域问题&#xff1f; 三、常见的跨域场景 四、跨域解决方法 1、JSONP &#xff08;1&#xff09;JSONP原理 &#xff08;2&#xff09;JSONP和AJAX对比 &#xff08;3&#xff09;JSONP优缺点 &#xff08;4&#x…

跨域的本质

简介 相信大家在做web系统开发的时候&#xff0c;都遇到过前端页面访问另一个服务器而非本服务器从而遭遇的跨域问题。跨域是个很常见的问题&#xff0c;虽然在web系统中的解决方式很简单&#xff0c;加一段耳熟能详的代码&#xff0c;或者一个注解&#xff0c;或者在某个框架中…

跨域及解决

文章目录 什么是跨域&#xff1f;Origin同源的例子不同源的例子为什么需要跨域&#xff1f;请求跨域了&#xff0c;那么请求到底发出去没有&#xff1f; 如何解决&#xff1f;1.JSONP2.corsa.简单请求b.复杂请求 3.postMessage4.websocket5.nginx6.document.domain Iframe cli…

什么是跨域?以及解决跨域的方法?

【学习什么是跨域&#xff0c;以及如何解决跨域。】 1、什么是跨域&#xff1f;&#xff08;什么是同源策略&#xff1f;&#xff09; 跨域&#xff1a; 由于浏览器的同源策略引起的&#xff0c;如果说协议、域名、端口号有任何一个不一样&#xff0c;都会引起跨域 为什么会出…

【跨域】Java后端解决跨域问题

废话不多说&#xff0c;先上完整代码 建corsConfig文件&#xff0c;copy下面内容&#xff0c;放进去 import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfigur…

什么是同源策略,什么是跨域,如何解决跨域

1.什么是同源策略&#xff1f; 同源策略/SOP&#xff08;Same origin policy&#xff09;是一种约定&#xff0c;由 Netscape 公司 1995 年引入浏览器&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;现在所有支持 JavaScript 的浏览器都会使用这个策略。如果缺少…

前端解决跨域----代理跨域

跨域报错&#xff1a; CORS error 为什么会跨域 ​ 先了解跨域的概念&#xff1a;发送请求的url的协议、域名、端口三者之间任意一个与当前页面的地址不同则视为跨域。 解决跨域 vue.config.js 设置代理跨域 module.exports {devServer: {proxy: {/api: {target: "ht…

什么是跨域问题?跨域解决问题

一.为什么会出现跨域问题? 出于浏览器的同源策略限制.同源策略是一种约定,它是浏览器最核心也是最基本的安全功能,如果缺少了同源策略,则浏览器的正常的功能可能会受到影响,跨域收是Web是构建在同源策略基础上的,浏览器只是针对同源策略的一种实现,同源策略会阻止一个域的Jav…

什么是跨域及怎么解决跨域问题?

什么是跨域&#xff1f; 这篇博文解释的挺清楚&#xff0c;我直接引用 什么是跨域&#xff1f;怎么解决跨域问题&#xff1f;_L瑜-CSDN博客_跨域是什么意思 跨域&#xff0c;指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的&#xff0c;是浏览器施加的安全…

VUE跨域、常用解决跨域的方法

当我们遇到请求后台接口遇到 Access-Control-Allow-Origin 时&#xff0c;那说明跨域了。 跨域是因为浏览器的同源策略所导致&#xff0c;同源策略&#xff08;Same origin policy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;同源是指&…

什么是跨域?怎么解决跨域问题

文章目录 一、同源策略二、同源策略案例三、什么是跨域四、跨域解决方法1.ajax的jsonp概念核心用法 2.CORS方式3.nginx 转发 一、同源策略 同源策略&#xff0c;是由 Netscape 提出的一个安全策略&#xff0c;它是浏览器最核心也是最基本的安全功能&#xff0c;如果缺少同源策…

什么是跨域以及为什么会出现跨域以及跨域的解决方案

1.什么是跨域&#xff1f; 跨域&#xff1a;指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的&#xff0c;是浏览器对javascript施加的安全限制。 • 同源策略&#xff1a;是指协议&#xff0c;域名&#xff0c;端口都要相同&#xff0c;其中有一个不同都会产…

什么是跨域?如何解决?

一、什么是跨域&#xff1f; 跨域&#xff1a;指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的&#xff0c;是浏览器对javascript施加的安全限制。 例如&#xff1a;a页面想获取b页面资源&#xff0c;如果a、b页面的协议、域名、端口、子域名不同&#xf…

什么是跨域? 出现原因及解决方法

目录 一、什么是跨域二、为什么有跨域问题&#xff1f;三、解决跨域问题的方案1.Jsonp2.nginx3.CORS3.1 什么是cors3.2 原理 四、GateWay网关中实现跨域步骤 一、什么是跨域 跨域&#xff1a;浏览器对于javascript的同源策略的限制 。 同源政策的目的&#xff0c;是为了保证用…

什么是跨域及解决跨域都有哪些方法?

一.同源策略 浏览器为了隔离潜在的恶意文件&#xff0c;使用同源策略&#xff0c;限制从一个源加载的文档或脚本和另一个源的资源进行交互&#xff08;不同源之间的文档&#xff0c;资源的交互&#xff09;; 通俗的理解&#xff1a;浏览器规定&#xff0c;A 网站的 JavaScript…

什么是跨域,怎么解决跨域?

1.什么是跨域 跨域是指浏览器不能执行其他网站的脚本。它是浏览器同源策略造成的&#xff0c;是浏览器对JS实施的安全限制。 2.常见的跨域场景 3.什么是同源策略&#xff1f; &#xff08;所谓同源是指&#xff1a;“域名”、“协议”、“端口”均为相同&#xff09; 同源策略/…

最常见的六种跨域解决方案

目录&#xff1a; 前言&#xff1a;什么是跨域&#xff1f;JSONPCORS搭建Node代理服务器Nginx反向代理postMessageWebsocket总结 前言&#xff1a;什么是跨域&#xff1f; 跨域就是当在页面上发送ajax请求时&#xff0c;由于浏览器同源策略的限制&#xff0c;要求当前页面和…

什么是跨域?跨域解决方法

一、为什么会出现跨域问题 出于浏览器的同源策略限制。同源策略&#xff08;Sameoriginpolicy&#xff09;是一种约定&#xff0c;它是浏览器最核心也最基本的安全功能&#xff0c;如果缺少了同源策略&#xff0c;则浏览器的正常功能可能都会受到影响。可以说Web是构建在同源策…