所谓同源是指,域名,协议,端口均相同
后端应用了 RESTful 风格的开发方式,因为需要所有 Web API 都需要支持跨源资源共享(CORS),所以需要进行全局设置。
首先跨域问题的测试方法为ajax请求
浏览器报错信息为:
No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){
$("#b01").click(function(){
htmlobj=$.ajax({url:"http://localhost:8090/bpcountlimit/getcommitmentnumberlist?pagenum=1&pagesize=2",async:false});
$("#myDiv").html(htmlobj.responseText);
});
});
</script>
</head>
<body>
<div id="myDiv"><h2>通过 AJAX 改变文本</h2></div>
<button id="b01" type="button">改变内容</button>
</body>
</html>
一、解决方法 @CrossOrigin 可以加载类上 也可以加载方法上 不是最优的方法 改进一下
@CrossOrigin public class BPCountLimitController { @Autowired private BPCountLimitService bpCountLimitService; @PostMapping("insertbpcountlimit") @ApiOperation(value = "添加经销商承诺量",notes = "添加经销商承诺量") public ResultVO insertBPCountLimit(@RequestBody BPCountLimit bpCountLimit){ bpCountLimitService.insertBPCountLimit(bpCountLimit); return ResultVOUtil.success("success"); } }
二、配置文件 全局加 现在是重写了addCorsMappings corsFilter能影响全局 而 addCorsMappings 不能影响全局
@Configuration public class CorsConfig extends WebMvcConfigurerAdapter { @Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowCredentials(true) .allowedMethods("GET", "POST", "DELETE", "PUT") .maxAge(3600); } }