admin管理员组文章数量:1794759
跨域问题Response to preflight request doesn't pass access control check: No 'Access
文章目录
- 1.bug详情:
- 2.解决方案【前后端解决方案】:
- 2.1.前端方案:
- 2.1.1. 设置access-Control-Allow-Origin
- 2.1.2. 设置proxyTable
- 2.2.后端方案:
- 2.2.1. 在controller对应的方法里添加“Access-Control-Allow-Origin”标头”
- 2.2.2. @CrossOrigin注解解决跨域
- 2.2.3. 今天发现一个特别强的,只需要启动类上加代码就可以了
- 3.结语:
a.写在方法上:
/** * 查询当前登录用户的信 * DSY */ //写在方法上 @CrossOrigin(origins = "localhost:8080/") // 实现跨域 要求spring的版本必须4.2以上 @RequestMapping(value = "/login", method = RequestMethod.GET) @ResponseBody public User login(HttpServletResponse response, @RequestParam(value="username")String username,@RequestParam(value="password")String password) { return loginService.getUser(username, password); }b.写在类上:
//写在类上,不用每个方法都写这个注解了 @CrossOrigin(origins="*",maxAge=3600) @RestController public class LoginController {} 2.2.3. 今天发现一个特别强的,只需要启动类上加代码就可以了 @Bean public CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); final CorsConfiguration config = new CorsConfiguration(); config.setAllowCredentials(true); // 允许cookies跨域 config.addAllowedOrigin("*");// 允许向该服务器提交请求的URI,*表示全部允许。。这里尽量限制来源域,比如xxxx:8080 ,以降低安全风险。。 config.addAllowedHeader("*");// 允许访问的头信,*表示全部 config.setMaxAge(18000L);// 预检请求的缓存时间(秒),即在这个时间段里,对于相同的跨域请求不会再预检了 config.addAllowedMethod("*");// 允许提交请求的方法,*表示全部允许,也可以单独设置GET、PUT等 source.registerCorsConfiguration("/**", config); return new CorsFilter(source); } 3.结语: 解决办法还有很多,我提及部分只是对我的项目比较受用,大家可以多尝试尝试, 然后如果单使用哪一条无效就把这些都加上吧,总有一条适合你!!!(我就这么干的໒( ◔ ▽ ◔ )७) 以后我遇到新的解决办法也会在博客里更新的。本文标签: amprequestresponsepreflightCheck
版权声明:本文标题:跨域问题Response to preflight request doesn't pass access control check: No 'Access 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686962211a122742.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论