Spring 3.1 MVC REST 支持之跨域访问(Cross-origin resource sharing)

本文介绍了如何在Spring 3.1 MVC中支持RESTful服务的跨域资源分享(CORS)。通过在Controller的响应中添加Access-Control-*头部,来允许不同源的请求。不过,该方法的兼容性需提前确认,因为不是所有浏览器都支持相关头部。实现跨域的解决方案是使用Interceptor,具体实现代码将在文中给出。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

关于跨域资源访问请参考 http://en.wikipedia.org/wiki/Cross-origin_resource_sharing ,基本原理是在Spring Controller的每一个请求返回的时候都加上Access-Control-...header,需要注意的是并不是所有的浏览器都支持这些header,使用之前要先了解清楚。

实现起来也很简单那就是Interceptor,代码如下:

public class AccessKeyInterceptor extends HandlerInterceptorAdapter {

	private static Log log=LogFactory.getLog(AccessKeyInterceptor.class);
	
	@Autowired
	private IAccessService accessService;
	
	private String accessKeyParameterName="accessKey";
	private List<String> defaultAccessAllowedFrom;
	
	@Override
	public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
		String accessKey=request.getParameter(accessKeyParameterName);
		String referer = request.getHeader("Referer");
		URL u = new URL(referer);
		String host = u.getHost().toLowerCase();
		if(accessKey==null){
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值