ajax跨域请求(spring框架4.2版本后)
1. 错误信息
jquery-3.1.1.min.js:4 XMLHttpRequest cannot load http://127.0.0.1:8080/user/login.action. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8080' is therefore not allowed access.
2. 解决办法
1. 方法一:@CrossOrigin注解
- 即在Controller控制器中,在Controller注解上方添加@CrossOrigin注解。
@CrossOrigin(origins = {"*"}, maxAge = 3600)
public classUserController{}
- 官网:www.fhadmin.org也可以在Controller控制器中的每个方法中分别添加@CrossOrigin注解。
@CrossOrigin(origins = {"*"}, maxAge = 3600)
public String login(String username, String password)throws Exception {}
- 假如添加之后还是出现了跨域问题,需要给映射路径中配置请求方法(method)
@RequestMapping(value = "user", method = {RequestMethod.POST})
@CrossOrigin(origins = {"*"}, maxAge = 3600)
public class UserController {}
2. 方法二:CORS全局配置
- 基于xml的配置,在springmvc.xml中配置
<!-- 跨域请求 -->
<mvc:cors>
<mvc:mappingpath="/user/*"/>
</mvc:cors>
- 官网:www.fhadmin.org 可以进行详细的配置
<mvc:cors>
<mvc:mappingpath="/api/**"allowed-origins="http://domain1.com, http://domain2.com"allowed-methods="GET, PUT"allowed-headers="header1, header2, header3"exposed-headers="header1, header2"allow-credentials="false"max-age="123" />
<mvc:mappingpath="/resources/**"allowed-origins="http://domain1.com" />
</mvc:cors>
- 假如出现"通配符的匹配很全面, 但无法找到元素 'mvc:cors' 的声明。"这样的错误。
解决办法:
查看文件上边beans中xsd文件引入的版本是不是不对。
如下所示:
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd
引入的xsd版本为3.0,而mvc:cors是4.2版本的功能。
因此,只需要将xsd版本更新就行。
http://www.springframework.org/schema/mvc/spring-mvc.xsd
或者设置成4.2以上的。
相关推荐
SpringMVC AJAX 跨域请求处理方法实例详解 本文主要介绍了 SpringMVC AJAX 跨域请求处理方法实例详解,解决了 AJAX 跨域请求问题。下面是详细的知识点解释: 一、什么是 AJAX 跨域请求? AJAX 跨域请求是指在不同...
当浏览器向服务器发送跨域请求时,会添加`Origin`头来表明请求来源。服务器响应时,通过设置`Access-Control-Allow-Origin`头来指定允许的来源。如果该头值包含请求来源,则浏览器允许跨域访问。 2. **SpringMVC中...
6. **安全与性能**:考虑使用CORS(跨源资源共享)处理跨域请求,以及实施适当的认证和授权机制,确保Ajax请求的安全性。同时,优化Ajax请求,避免过多的异步请求影响服务器性能。 通过“spring_mvc_ajax.zip”中的...
secureuri: false, // 是否启用安全的跨域请求 fileElementId: 'file1', // 与文件输入字段ID相对应 dataType: 'json', // 预期服务器返回的数据类型 success: function (data, status) { console.debug(data);...
**SpringMVC跨域解决方案** 跨域问题在Web开发中是一个常见的挑战,它涉及到浏览器的安全策略,限制了JavaScript从一个源向另一个源发起HTTP请求的能力。简单来说,如果请求的URL与当前页面的源(协议+域名+端口)...
在Spring MVC中,跨域问题通常发生...通过上述方法,你可以实现Spring MVC或Spring Boot应用中的跨域请求处理。在提供的压缩包文件"code"中,应该包含了具体的代码实现,你可以参考这些代码来理解和应用这些解决方案。
secureuri: false, // 是否启用安全的跨域请求 fileElementId: 'file', // 文件选择元素ID dataType: 'json', success: function(data, status) { if (data.error == 0) { alert('文件上传成功'); } else { ...
具体来说,如果请求的URL与当前文档的URL在协议、域名或端口号上有所不同,那么这次请求就是跨域请求。 **为何会出现跨域需求?** 通常有以下两种常见场景: 1. **Web应用部署在不同的服务器上**:例如百度的不同...
- `demo2`可能是对`demo1`的扩展,增加了CORS配置,允许跨域的Ajax请求访问服务端资源。 总结,通过Spring Boot结合Redis,我们可以实现高效的分布式Session共享,确保用户会话在多服务器环境下的一致性。同时,...
- 确保Spring MVC的MVC配置正确无误,特别是对于Ajax请求,可能需要设置跨域访问控制(CORS)。 - 如果返回的数据是JSON格式,使用`@ResponseBody`时,Spring MVC默认使用`MappingJackson2HttpMessageConverter`...
Spring MVC提供了CORS(Cross-Origin Resource Sharing)配置来允许特定的跨域请求。 7. **Spring MVC与Ajax的结合**:Spring MVC支持JSON和XML等多种数据格式,这使得它与Ajax的集成非常方便。通过配置`...
2. jQuery 或原生 JavaScript 的 Ajax 方法:在前端,我们通常使用jQuery库提供的$.ajax()方法或原生JavaScript的XMLHttpRequest对象来发起Ajax请求。这些方法支持POST或GET方式向服务器发送JSON数据,并能接收...
Spring MVC作为一款流行的MVC框架,提供了多种方法来处理跨域请求。本文将深入探讨Spring MVC中处理Ajax跨域问题的方法以及需要注意的事项。 **为何出现跨域** 跨域是由浏览器的安全策略——同源策略(Same-origin...
AJAX请求常用于实现动态分页和排序功能。Spring MVC提供ModelAndView或Pageable接口来处理这些需求,可以在后端计算分页数据,然后通过AJAX返回给前端。 8. **跨域资源共享(CORS)** 如果AJAX请求来源于不同的源,...
在SpringMVC中,可以通过添加过滤器或者使用`@CrossOrigin`注解来启用CORS,以支持前端跨域请求。 5. **Hibernate**:Hibernate是一个对象关系映射(ORM)框架,它将Java对象与数据库表对应,简化了数据库操作。...
1. **跨域问题**:Ajax请求受到同源策略限制,跨域时需要配置CORS策略。 2. **缓存**:默认情况下,GET请求可能会被浏览器缓存,可能导致数据过时。可以设置`cache: false`避免这个问题。 3. **JSONP**:对于支持...
SpringMVC、MyBatis和DWR是三个在Java Web开发中广泛应用...通过学习和理解这个示例,开发者可以更好地掌握SpringMVC的请求处理机制、MyBatis的数据库操作以及DWR的AJAX通信方式,为开发更复杂的Java Web应用打下基础。
Spring MVC提供了CORS(Cross-Origin Resource Sharing)配置,允许跨域请求。在Spring配置中添加CORS过滤器或使用`@CrossOrigin`注解即可。 6. **安全考虑**:使用Ajax时,应考虑XSS(跨站脚本攻击)和CSRF(跨站...
在这个示例中,开发者可能已经配置了SpringMVC的DispatcherServlet,定义了Controller来处理请求,并通过AOP(面向切面编程)管理事务。Hibernate的配置文件(如hibernate.cfg.xml)会指定数据源和实体类映射,使得...