跨域文件上传

4 篇文章 0 订阅
2 篇文章 0 订阅




什么是 CORS ?

跨来源资源共享(Cross-origin resource sharing)是一份浏览器技术的规范,提供了 Web 服务从不同域传来沙盒脚本的方法,以避开浏览器的同源策略,是 JSONP 模式的现代版。与 JSONP 不同,CORS 除了 GET 要求方法以外也支持其他的 HTTP 要求。用 CORS 可以让网页设计师用一般的 XMLHttpRequest,这种方式的错误处理比 JSONP 要来的好。
以上内容摘自维基百科

用人话来解释就是:JavaScript 或 Cookies 不允许访问不同域名下面的内容,当我们想在两个不同域名之前相互通信的话,我们就要考虑跨域这个问题,这也是在通往一个优秀的前端的路上必不可少的过程,如果你只会有 JSONP 的话,那真是令人伤感的,因为 JSONP 是不支持 POST 请求的,所以,在科技发展的今天突然出现了 CORS 这项技术,好像就不需要前端什么事情了,我们可以帮他搞定跨域这个头疼的问题。其实是很简单的一项技术。

怎么使用呢?

据我所知道的是有三种方式:Tomcat 配置、拦截器设置响应头和使用 Spring MVC 4.2+。

设置 Tomcat 这种方式就是引用别人封装好的两个 jar 包,配置一下web.xml就行了。我也并不推荐,这里放两个我在网上找到的配置相关文章,感兴趣可以看看。

CORS Filter Installation
tomcat下CORS(跨域资源共享) 的配置
拦截器设置响应头 这种方式原理就是利用拦截器在方法执行前,我们增加请求的响应头,用来支持跨域请求。这种方案是可行的,大部分都是采用这种方案。我当时也是打算采用这种方案,直到我发现原来 Spring 框架已经支持了 CORS 之后,就果断采用了 Spring 框架的内置的方案,其实原理也是一样的。

直接配置即可:

    <!-- API 接口跨域配置 -->
<mvc:cors> 
    <mvc:mapping path="/api/**"
        allowed-origins="*"
        allowed-methods="POST, GET, OPTIONS, DELETE, PUT"
        allowed-headers="Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-With"
        allow-credentials="true" />
</mvc:cors>
当然你也可以在Controller上使用 @CrossOrigin 注解。类似于这样:

到这里,支持 CORS 跨域请求就配置完成了,这里需要注意的地方是,你的Spring MVC 版本必须是 4.2 及以上。

ajax跨域无法识别session解决方案
$.ajax({
    //...
    xhrFields: {
        withCredentials: true
    },
    //...
});
另外,需要服务端添加如下的响应头:
Response.AddHeader("Access-Control-Allow-Credentials", "true");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个易于使用,集成度高的Java Web框架,开发者可以快速地创建可靠、可扩展的Web应用程序。在Spring Boot中,文件是一个常见的问题。 文件问题源自于浏览器的安全限制,正常的请求会被禁止。在Spring Boot中,处理文件问题可以通过使用CORS(资源共享)来实现。使用CORS可以在服务端允许其他名的请求,从而解决文件的问题。 在Spring Boot中,我们可以通过添加CORS配置的方式来解决文件问题。具体步骤如下: 1. 创建一个CORS配置的类。 ``` @Configuration public class CorsConfiguration { /** * 资源共享配置 * * @return CorsConfigurationSource */ @Bean public CorsConfigurationSource corsConfigurationSource() { CorsConfiguration corsConfiguration = new CorsConfiguration(); corsConfiguration.addAllowedOrigin("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource(); urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration); return urlBasedCorsConfigurationSource; } } ``` 2. 在controller中添加上文件的方法,并添加`@CrossOrigin`注解。 ``` @PostMapping("/upload") @CrossOrigin public String upload(@RequestParam("file") MultipartFile file) { // ... } ``` 使用CORS解决文件问题,不仅可以保证服务端的安全性,还可以提高Web应用程序的可靠性和可扩展性。因此,在Spring Boot中建议使用CORS来解决文件的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值