Spring MVC、Ajax 和同源策略

Posted

技术标签:

【中文标题】Spring MVC、Ajax 和同源策略【英文标题】:Spring MVC, Ajax and Same Origin Policy 【发布时间】:2014-07-23 11:23:58 【问题描述】:

使用 spring MVC Rest 服务克服 Ajax 调用中的同源策略的最佳方法是什么?是添加标头值还是使用 JSONP?

如何在 Spring Mvc REST 中同时使用 RequestParam 和 PathVariable 映射请求?

@RequestMapping(value = "/getstudent/userId", method = RequestMethod.GET)    
public @ResponseBody Student getStudent(@PathVariable String userId, @RequestParam("callback") String callback) 
    StudentRegister studentRegister = new StudentRegister();
    return studentRegister.getStudent(userId);

【问题讨论】:

【参考方案1】:

您可以检查是否允许使用 Origin 标头。如果是,请将Access-Control-Allow-Origin 标头添加到响应中:

@RequestMapping("xhr")    
@ResponseBody
public Object xhr(@RequestHeader("Origin") String origin, HttpServletResponse response) 
    if (LIST_OF_AUTHORIZED_ORIGINS.contains(origin)) 
        response.setHeader("Access-Control-Allow-Origin", origin);
    
    return toJson();

【讨论】:

这是最佳做法吗? 如何在 Spring Mvc REST 中使用 RequestParam 和 PathVariable 映射请求?

以上是关于Spring MVC、Ajax 和同源策略的主要内容,如果未能解决你的问题,请参考以下文章

Ajax+Spring MVC实现跨域请求(JSONP)(转)

Spring MVC的跨域访问

Spring MVC的跨域访问

ajax的同源策略和JOSNP跨域

Ajax跨域--同源策略 & 什么是跨域

Ajax跨域请求 同源策略与Jsonp