springmvc,注解CrossOrigin允许跨域及其使用场合

 

 

通过测试,我们可以发现: js跨域是浏览器的行为; “未配置为允许跨域”的接口也可以被jquery代码访问,但浏览器禁止了对响应结果的操作;我们通过http-client直接调用接口并不受跨域的限制;所以CrossOrigin主要帮助页面上访问非本域的接口。参见下图

 

181156_rsqu_923516.png

(图一)

 

181248_8h2p_923516.png

(图二)

 

 

参考资料:

http://blog.youkuaiyun.com/relucent/article/details/45716325

https://www.zhihu.com/question/19618769

 

测试代码


<html>
<head>
	<!-- 
    <meta http-equiv="Access-Control-Allow-Origin" content="*">  
	 -->
	<meta charset="UTF-8">
	<script src="http://apps.bdimg.com/libs/jquery/2.1.3/jquery.min.js"></script>
	<script>
	function showMessage(url){
		$.getJSON(
			url,
			function(data){
				alert(data.msg);
			}
		);
	}
	
	function doClick(){
		var url = "http://127.0.0.1:8080/mgr/test/msg";
		showMessage(url);
	}
	
	function doClick0(){
		var url = "http://127.0.0.1:8080/mgr/test/msg0";
		showMessage(url);
	}
	</script>
</head>

<body>
<br/>
<br/>
<input type="button" value="允许跨域" onclick="doClick()"/>
<br/>
<input type="button" value="未允许跨域" onclick="doClick0()"/>
</body>
</html>

 

服务器端:

/**
     * 已配为允许跨域访问
     * @return
     */
    @CrossOrigin(origins = "*",maxAge = 3000)
    @RequestMapping(value = "msg") @ResponseBody public Map<String,Object> getMessage(){
        Map<String,Object> ret = new LinkedHashMap<>();
        ret.put("code", 0);
        ret.put("msg", "msg");
        logger.info("ret:"+ret.toString());
        return ret;
    }

    /**
     * 未配置允许跨域访问
     * @return
     */
    @RequestMapping(value = "msg0") @ResponseBody public Map<String,Object> getMessage0(){
        Map<String,Object> ret = new LinkedHashMap<>();
        ret.put("code", 0);
        ret.put("msg", "msg0");
        logger.info("ret:"+ret.toString());
        return ret;
    }

注: CrossOrigin  需要jdk1.8+、spring 4.2+

 

 

转载于:https://my.oschina.net/tangcoffee/blog/1608716

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值