ajax无法跨域获取数据,同源策略:域名,协议名,端口号相同则同源,否则跨域
1.Cors解决方法:
在后端加上如下代码:
@Configuration
@EnableWebMvc
public class Cors extends WebMvcConfigurerAdapter {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**").allowedOrigins("*")
.allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS")
.allowedHeaders("Accept", "Origin", "X-Requested-With", "Content-Type",
"Last-Modified", "device", "token")
.exposedHeaders("Set-Cookie")
.allowCredentials(true).maxAge(3600);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
registry.addResourceHandler("swagger-ui.html")
.addResourceLocations("classpath:/META-INF/resources/");
registry.addResourceHandler("/webjars/**")
.addResourceLocations("classpath:/META-INF/resources/webjars/");
}
}
2.Jsonp解决:(Jsonp不支持POST请求)
Controller代码:
@RequestMapping(value = "/queryjk/user" , method = RequestMethod.GET)
public String getUser(@RequestParam("callback") String callback ,Integer id){
if(id == null || "".equals(id)){
System.out.println("请求参数为空");
}
String jk = service.selectById(id).toString();
System.out.println(jk);
return callback+"("+jk+")";
}
前端ajax: