SpringMvc支持跨域和自定义header
2016-11-16 15:14
330 查看
<!-- 支持options类型请求 --> <servlet> <servlet-name>application</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>dispatchOptionsRequest</param-name> <param-value>true</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet>
1 web.xml 配置上面 支持 options请求
2 options请求会请求两次服务器 第一次是嗅探 返回200 即可
第二次在让请求进入正式接口 [具体代码进入第三步的filter 里面处理]
3 服务器filter 还需要加入
response.setHeader("Access-Control-Allow-Origin", "*"); // response.setHeader("Access-Control-Allow-Headers", "X-Requested-With,token"); response.setHeader("Access-Control-Allow-Headers", "Content-Type,token"); // 加入支持自定义的header 加入元素 token 前端就可以发送自定义token过来 response.setHeader("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS"); response.setHeader("X-Powered-By"," 3.2.1"); response.setHeader("Content-Type", "application/json;charset=utf-8"); if(request.getMethod().equals("OPTIONS")){ response.setStatus(200); // chain.doFilter(request, response); } else{ if ( shortUri.equals("login.html")) { chain.doFilter(request, response); }else{ try { String token = request.getHeader("token"); if (token == null ||token.length()<= 0) { //chain.doFilter(request, response); // Writer.write(response, "token不存在"); Writer.write(response, "token为空,请重新登录"); } else { Long tokenValue= (Long.valueOf(token)-12345)/31 ; request.setAttribute("uid", String.valueOf(tokenValue)); chain.doFilter(request, response); } } catch (Exception e) { LOGGER.error(e.getMessage(), e); Writer.write(response, "token错误,请重新登录"); } } }
4 控制器
method = RequestMethod.GET 不要加
//3 获得当前用户的列表信息 @RequestMapping(value = "getnowuser" ) //, method = RequestMethod.GET @ResponseBody public Map<String, Object> getNowUser(@Uid String uid) throws JsonProcessingException{ // @Uid String uid if(!isHasSuperRole(uid)) return Ajax.buildErrorResult(noPermission); // User user = userService.findUserById(Long.parseLong(uid)); Staff staff = staffService.findStaffById(Long.parseLong(uid)); return Ajax.getSuccessReturnMapWithData(staff); }
5 ajax前端跨域访问
$.ajax({
beforeSend: function(request) {
request.setRequestHeader("token", userToken);
},
url:url,
dataType:'json',
processData: true,
data:para,
type:'get',
crossDomain:true,
success:function(data){
callback(data);
},
error:function(XMLHttpRequest, textStatus, errorThrown) {
alert(XMLHttpRequest.status);
alert(XMLHttpRequest.readyState);
alert(errorThrown);
}
});
关注微信公众号:
留言暗号给他: 我是程序员 即可赠送一套mysql dba视频 记得不要取消关注 因为不定期送视频
他们有1700G it视频 (识别二维码 或者搜索公众号 历史帝 或者zhenshidelishi)
赠送视频如下:
或者一套redis视频
不定期送视频
1700G it视频 等你来!
更新!!
元宵节巨献:2月12 号 赠送 多套花钱买的架构师视频
赶紧去关注吧!!
相关文章推荐
- WebApi 自定义过滤器实现支持AJAX跨域的请求
- 跨域无法获取自定义header的问题
- SpringMVC使用fastjson自定义Converter支持返回jsonp格式
- springmvc接口支持跨域请求
- springmvc自定义数据绑定支持入参和出参snake和camel相互转化
- 模拟get和post请求(支持自定义header和测试CDN节点)
- SpringMVC支持跨域的几种姿势
- SpringMVC支持跨域访问的CORS配置
- SpringMVC第四篇【参数绑定详讲、默认支持参数类型、自定义参数绑定、RequestParam注解】
- Springmvc自定义过滤器Filter,解决跨域问题
- SpringMVC支持Jsonp跨域请求的方法
- 自定义Header跨域问题
- SpringMVC 4.2 对跨域的支持
- php跨域问题,ajax发送的header自定义问题
- SpringMVC对于跨域访问的支持
- 增加响应header让ajax支持跨域
- SpringMVC支持跨域访问的CORS配置
- HeaderView、FooterView、刷新、加载更多,支持自定义组装的RecyclerView组件
- SpringMVC使用fastjson自定义Converter支持返回jsonp格式(转)
- 工作随笔——selenium支持post请求,支持自定义header