精华内容
下载资源
问答
  • @CrossOrigin

    2019-05-22 01:49:08
    @CrossOrigin 注解解决跨域问题,在需要允许跨域访问的接口加上该注解就可以,如果用@RequestMapping,则要指定get,或post等才有起效

    @CrossOrigin 注解解决跨域问题,在需要允许跨域访问的接口加上该注解就可以,如果用@RequestMapping,则要指定get,或post等才有起效

    展开全文
  • 注解 @CrossOrigin

    万次阅读 多人点赞 2017-08-17 15:06:27
    在Controller中看到@CrossOrigin ,这是什么?有什么用?为什么要用? what? @CrossOrigin是用来处理跨域请求的注解 先来说一下什么是跨域: (站在巨人的肩膀上) 跨域,指的是浏览器不能执行其他网站...

    在Controller中看到@CrossOrigin ,这是什么?有什么用?为什么要用?

     

    what?

     @CrossOrigin是用来处理跨域请求的注解

     

    先来说一下什么是跨域:

     

    (站在巨人的肩膀上)

    跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对JavaScript施加的安全限制。

    所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子:

    http://www.123.com/index.html 调用 http://www.123.com/server.PHP (非跨域)

    http://www.123.com/index.html 调用 http://www.456.com/server.php (主域名不同:123/456,跨域)

    http://abc.123.com/index.html 调用 http://def.123.com/server.php(子域名不同:abc/def,跨域)

    http://www.123.com:8080/index.html调用 http://www.123.com:8081/server.php(端口不同:8080/8081,跨域)

    http://www.123.com/index.html 调用 https://www.123.com/server.php(协议不同:http/https,跨域)

    请注意:localhost和127.0.0.1虽然都指向本机,但也属于跨域。

    浏览器执行javascript脚本时,会检查这个脚本属于哪个页面,如果不是同源页面,就不会被执行。

     

    当域名www.abc.com下的js代码去访问www.def.com域名下的资源,就会受到限制。

     

    @CrossOrigin可以处理跨域请求,让你能访问不是一个域的文件。

    展开全文
  • SpringBoot解决CORS跨域(@CrossOrigin

    万次阅读 多人点赞 2018-07-21 10:59:20
    要求在Spring4.2及以上的版本 1、@CrossOrigin使用场景要求 jdk1.8+ Spring4.2+ 2、@CrossOrigin源码解析(翻译参考网络,文末列出参考地址) @Target({ ElementType.METHOD, ElementType.TYPE }) @Retention...

    一、关于跨域介绍

    在前后分离的架构下,跨域问题难免会遇见比如,站点 http://domain-a.com 的某 HTML 页面通过 的 src 请求 http://domain-b.com/image.jpg。网络上的许多页面都会加载来自不同域的CSS样式表,图像和脚本等资源。

    出于安全原因,浏览器限制从脚本内发起的跨源HTTP请求。 例如,XMLHttpRequest和Fetch API遵循同源策略。 这意味着使用这些API的Web应用程序只能从加载应用程序的同一个域请求HTTP资源,除非使用CORS头文件。

    跨域的体现,在于它的域名不同或者端口不同,但要注意以下的形式为非跨域模式
    http://www.example.com/index.html ==> http://www.example.com/login.html


    二、Spring Boot跨域(@CrossOrigin)

    当然这里虽然指SpringBoot但是SpringMVC也是一样的,要求在Spring4.2及以上的版本

    1、@CrossOrigin使用场景要求
    • jdk1.8+
    • Spring4.2+
    2、@CrossOrigin源码解析(翻译参考网络,文末列出参考地址)
    @Target({ ElementType.METHOD, ElementType.TYPE })
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface CrossOrigin {
    
        String[] DEFAULT_ORIGINS = { "*" };
    
        String[] DEFAULT_ALLOWED_HEADERS = { "*" };
    
        boolean DEFAULT_ALLOW_CREDENTIALS = true;
    
        long DEFAULT_MAX_AGE = 1800;
    
    
        /**
         * 同origins属性一样
         */
        @AliasFor("origins")
        String[] value() default {};
    
        /**
         * 所有支持域的集合,例如"http://domain1.com"。
         * <p>这些值都显示在请求头中的Access-Control-Allow-Origin
         * "*"代表所有域的请求都支持
         * <p>如果没有定义,所有请求的域都支持
         * @see #value
         */
        @AliasFor("value")
        String[] origins() default {};
    
        /**
         * 允许请求头重的header,默认都支持
         */
        String[] allowedHeaders() default {};
    
        /**
         * 响应头中允许访问的header,默认为空
         */
        String[] exposedHeaders() default {};
    
        /**
         * 请求支持的方法,例如"{RequestMethod.GET, RequestMethod.POST}"}。
         * 默认支持RequestMapping中设置的方法
         */
        RequestMethod[] methods() default {};
    
        /**
         * 是否允许cookie随请求发送,使用时必须指定具体的域
         */
        String allowCredentials() default "";
    
        /**
         * 预请求的结果的有效期,默认30分钟
         */
        long maxAge() default -1;
    
    }
    
    3、@CrossOrigin使用

    Spring Boot下的请求处理控制器

    package com.example.demo.controller;
    
    import com.example.demo.domain.User;
    import com.example.demo.service.IUserFind;
    import org.springframework.web.bind.annotation.CrossOrigin;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RequestParam;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.annotation.Resource;
    
    /**
     * @Title: UserController
     * @ProjectName demo
     * @Description: 请求处理控制器
     * @author 浅然
     * @date 2018/7/2022:18
    **/
    @RestController
    //实现跨域注解
    //origin="*"代表所有域名都可访问
    //maxAge飞行前响应的缓存持续时间的最大年龄,简单来说就是Cookie的有效期 单位为秒
    //若maxAge是负数,则代表为临时Cookie,不会被持久化,Cookie信息保存在浏览器内存中,浏览器关闭Cookie就消失
    @CrossOrigin(origins = "*",maxAge = 3600)
    public class UserController {
        @Resource
        private IUserFind userFind;
    
        @GetMapping("finduser")
        public User finduser(@RequestParam(value="id") Integer id){
            //此处省略相应代码
        }
    }
    
    

    后台返回的数据

    这里写图片描述

    前端跨域请求

    <!DOCTYPE html>
    <html>
    	<head>
    		<meta charset="utf-8" />
    		<title>demo</title>
    		<script type="text/javascript" src="js/jquery-3.3.1.min.js" ></script>
    	</head>
    	<body>
    		<input type="button" value="测试" onclick="ajaxloding()" />
    		<div id="usermessage"></div>
    		<script>
    			var getdata=0;
    			function ajaxloding(){
    				$.ajax({
    					async:false,
    					type:"get",
    					url:"http://localhost:8080/api/finduser?id=1",
    					contentType: "application/x-www-form-urlencoded",
    					dataType: "json",
    					data: {},
    					success:function(result){
    						getdata=result.name
    					},
    					error: function (errorMsg) {
    			            //请求失败时执行该函数
    			            alert("请求数据失败!");
    			        }
    				});
    				$("#usermessage").text(getdata)
    			}
    		</script>
    	</body>
    </html>
    

    这样就解决了跨域问题,获取了后台的数据

    这里写图片描述


    参考

    展开全文
  • 使用@CrossOrigin注解解决前后台分离中的跨域问题
  • 主要介绍了Spring @CrossOrigin 注解原理实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • springBoot跨域注解@CrossOrigin

    万次阅读 2019-01-25 10:55:33
    Spring Framework 4.2 ...所以springMVC的版本要在4.2或以上版本才支持@CrossOrigin ; springBoot跨域注解 : @CrossOrigin 在controller控制类上方加注解;   spring注解@CrossOrigin不起作用的原因 1、是s...

    Spring Framework 4.2 GA为CORS提供了第一类支持,使您比通常的基于过滤器的解决方案更容易和更强大地配置它。所以springMVC的版本要在4.2或以上版本才支持@CrossOrigin ;

    springBoot跨域注解 : @CrossOrigin

    在controller控制类上方加注解;

     

    spring注解@CrossOrigin不起作用的原因

    1、是springMVC的版本要在4.2或以上版本才支持@CrossOrigin

    2、非@CrossOrigin没有解决跨域请求问题,而是不正确的请求导致无法得到预期的响应,导致浏览器端提示跨域问题。

    3、在Controller注解上方添加@CrossOrigin注解后,仍然出现跨域问题,解决方案之一就是:

    在@RequestMapping注解中没有指定Get、Post方式,具体指定后,问题解决。

    类似代码如下:

    @CrossOrigin
    @RestController
    public class person{
        
        @RequestMapping(method = RequestMethod.GET)
        public String add() {
            // 若干代码
        }
    }

     

    展开全文
  • 注解@CrossOrigin详解

    万次阅读 多人点赞 2020-10-25 16:42:30
    注解@CrossOrigin 出于安全原因,浏览器禁止Ajax调用驻留在当前原点之外的资源。例如,当你在一个标签中检查你的银行账户时,你可以在另一个选项卡上拥有EVILL网站。来自EVILL的脚本不能够对你的银行API做出Ajax...
  • Spring 注解面面通 之 @CrossOrigin 处理请求源码解析

    千次阅读 热门讨论 2021-01-27 16:19:02
      @CrossOrigin源码解析主要分为两个阶段:   ① @CrossOrigin注释的方法扫描注册。   ② 请求匹配@CrossOrigin注释的方法。   本文针对第②阶段从源码角度进行解析,关于第①阶段请参照《Spring 注解面面通...
  • 在Controller中看到@CrossOrigin ,这是什么?有什么用?为什么要用? what? @CrossOrigin是用来处理跨域请求的注解 先来说一下什么是跨域: (站在巨人的肩膀上) 跨域,指的是浏览器不能执行其他网站的脚本。...
  • 注解@CrossOrigin解决跨域问题

    万次阅读 2019-01-18 11:56:28
    转自: 注解@CrossOrigin解决跨域问题 阅读目录: 一、跨域(CORS)支持: 二、使用方法: 1、controller配置CORS 2、全局CORS配置 3、XML命名空间 4、How does it work? 5、基于过滤器的CORS支持 ...
  • SpringBoot注解@CrossOrigin不起作用 @CrossOrigin为什么解决不了跨域问题 是因为@CrossOrigin也是一个拦截器,但是他在自定义拦截器之后。所以在自定义拦截器失败后,跨域的拦截器未处理,造成跨域失败。现在新...
  • 使用@CrossOrigin实现跨域请求

    千次阅读 2018-07-15 17:35:09
    在Spring MVC4.2之后推出了@CrossOrigin注解来解决跨域问题,而在4.2之前我们都是通过定义注册过滤器的方式来解决跨域与问题的,所以在Spring4.2以后使用@CrossOrigin能一定程度上的简化解决跨域问题的方式。...
  • 跨域问题--@CrossOrigin

    2020-08-05 10:45:21
    @[跨域问题–@CrossOrigin) #注解@CrossOrigin 一、跨域(CORS)支持: 二、使用方法: 1、controller配置CORS 1.1、controller方法的CORS配置 1.2、为整个controller启用@CrossOrigin 1.3、同时使用controller和方法...
  • Spring Framework 4.2 GA为CORS提供了第一类支持,使您比通常的基于过滤器的解决方案更容易和更强大地配置它。所以springMVC的版本要在4.2或以上版本才支持@CrossOrigin ; springBoot跨域注解 : @CrossOrigin
  •   @CrossOrigin源码解析主要分为两个阶段:   ① @CrossOrigin注释的方法扫描注册。   ② 请求匹配@CrossOrigin注释的方法。   本文针对第①阶段从源码角度进行解析,关于第②阶段请参照《Spring 注解面面通...
  • SpringMVC - @CrossOrigin

    2019-03-11 21:27:56
    注解@CrossOrigin解决跨域问题 阅读目录: 一、跨域(CORS)支持: 二、使用方法: 1、controller配置CORS 2、全局CORS配置 3、XML命名空间 4、How does it work? 5、基于过滤器的CORS支持 三、...
  • SpringBoot 2.0 @CrossOrigin 无法跨域问题

    千次阅读 2018-10-18 15:14:39
    在spring boot 1.5中,配置跨域一般是直接在controller或是在某一个方法上添加 @CrossOrigin 注解即可,如下代码 /** * @author chenws * @decription * @date 2018/10/18 */ @RestController @...
  • SpringMVC注解@CrossOrigin解决跨域问题

    千次阅读 2019-03-27 09:51:27
    一般的,只要网站的【协议名protocol】、【主机host】、【端口号port】这三个中的任意一个不同,网站间的数据请求与传输便构成了跨域调用 ...在Spring MVC4.2之后推出了@CrossOrigin注解来解决跨域问题...
  • springboot跨域注解@CrossOrigin学习

    千次阅读 2019-05-13 14:15:30
    @CrossOrigin 通过在controller方法上注入注解,@CrossOrigin 1.origins=“配置白名单(方法或者类语序访问的域,如:http://xxx.com)”,allowCredentials=“允许跨域访问携带cookie,默认false,开启为true” ...
  • springMVC的跨域上传图片,通过 @CrossOrigin有什么资料么

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,144
精华内容 17,657
关键字:

@crossorigin