41

Springboot CORS跨域访问

 5 years ago
source link: http://www.cnblogs.com/undefined22/p/12603553.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

Springboot CORS跨域访问

什么是跨域

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

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

举例:

当前页面url 被请求页面url ** 是否跨域** 原因 http://www.test.com/ http://www.test.com/index.html 否 同源(协议、域名、端口号相同) http://www.test.com/ https://www.test.com/index.html 跨域 协议不同(http/https) http://www.test.com/ http://www.baidu.com/ 跨域 主域名不同(test/baidu) http://www.test.com/ http://blog.test.com/ 跨域 子域名不同(www/blog) http://www.test.com:8080/ http://www.test.com:7001/ 跨域 端口号不同(8080/7001)

跨域的限制

【1】无法读取非同源网页的 Cookie、LocalStorage 和 IndexedDB

【2】无法接触非同源网页的 DOM

【3】无法向非同源地址发送 AJAX 请求

基于Springboot搭建CORS跨域访问

基于SpringBooot项目搭建可以站外Ajax请求访问的跨域资源服务器。

方法一:

在每个controller上添加 @CrossOrigin

其中@CrossOrigin中的2个参数:

origins: 允许可访问的域列表

maxAge:准备响应前的缓存持续的最大时间(以秒为单位)。

未加@CrossOrigin:

@RestController
@RequestMapping("/test")
public class TestRequestLogController {

    @RequestMapping("/request_log")
    public String TestRequestLog(@RequestParam String name){
        return "hello " + name;
    }
}

fmEBZz2.jpg!web

加@CrossOrigin:

n2Qv6vZ.jpg!web

方法二:

@Configuration
public class CorsConfig {
    private CorsConfiguration corsConfiguration(){
        CorsConfiguration corsConfiguration = new CorsConfiguration();
        corsConfiguration.addAllowedHeader("*");
        corsConfiguration.addAllowedMethod(HttpMethod.GET);
        corsConfiguration.addAllowedMethod(HttpMethod.POST);
        corsConfiguration.addAllowedOrigin("*");
        return corsConfiguration;
    }

    @Bean
    public CorsFilter corsFilter() {
        UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource();
        urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration());
        return new CorsFilter(urlBasedCorsConfigurationSource);
    }
}

aQjyimJ.jpg!web


Recommend

  • 82
    • 掘金 juejin.im 6 years ago
    • Cache

    跨域资源共享——CORS

    跨域资源共享(Cross-Origin Resource Sharing)是一种机制,它使用额外的 HTTP 头部告诉浏览器可以让一个web应用进行跨域资源请求。 请求类型 简单请求 若一个请求同时满足下述所有条件,则该请求可视为“简单请求”(注:灰色字体内容

  • 17
    • 微信 mp.weixin.qq.com 4 years ago
    • Cache

    跨域,不止CORS

    我们通常提到跨域问题的时候,相信大家首先会想到的是 CORS (跨源资源共享),其实  CORS 只是众多跨域访问场...

  • 9
    • www.wenyuanblog.com 4 years ago
    • Cache

    Django 通过设置 CORS 解决跨域问题

    Django 通过设置 CORS 解决跨域问题 一、Ajax 跨域请求Ajax 请求一个目标地址为非本域(协议、主机、端口任意一个不同)的 web 资源。 前端http://192.168.10.50:8080 后端

  • 11

    源代码探案系列之 .NET Core 跨域中间件 CORS2021-03-1632 25 min.本文是 #源代码探案系列# 第三篇,今天这篇博客,我们来一起解读下 ASP.NET Core 中的

  • 5
    • xmanyou.com 3 years ago
    • Cache

    Nginx 配置允许跨域访问 CORS

    11 April 2020 / 开发笔记 Nginx 配置允许跨域访问 CORS 原文地址: https://en...

  • 9
    • segmentfault.com 3 years ago
    • Cache

    安全系列之:跨域资源共享CORS

    什么是跨域资源共享呢? 我们知道一个域是由scheme、domain和port三部分来组成的,这三个部分可以唯一标记一个域,或者一个服务器请求的地址。跨域资源共享的意思就是服务器允许其他的域来访问它自己域的资源。CORS是一个基于HTTP-header检测的机制,本文...

  • 9

    利用跨域资源共享(CORS)实现ajax跨域调用 浏览:3024次  出处信息     前几天看了一篇E文说部署CORS

  • 8
    • garywu520.github.io 2 years ago
    • Cache

    nginx开启跨域CORS

    nginx开启跨域CORS 2022-02-08 字数统计: 268字

  • 8

    转载——跨域资源共享CORS浅析及便捷解决方案转载——跨域资源共享CORS浅析及便捷解决方案跨源资源共享 (CORS) (或通俗地译为跨域资源共享)是一种基于HTTP 头的机制,该机制通过允许服务器标示除了它自己以外的其它origin(域,协...

  • 10
    • os.51cto.com 2 years ago
    • Cache

    浏览器跨域请求的机制:CORS

    浏览器跨域请求的机制:CORS-51CTO.COM 浏览器跨域请求的机制:CORS 作者:前端西瓜哥 2022-04-29 09:11:14 CORS 真正的形态是非简单请求,它不会立即发送真正的请求,而是额外发送 OP...

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK