angular2——前后端交互
发布时间:2020-12-17 09:02:26 所属栏目:安全 来源:网络整理
导读:前后端交互由于是在两个jvm上运行,所以必须要解决跨域问题。 如果springmvc用的是4.2版本以上的话,那么恭喜你,解决跨域的问题非常的简单。在controller上的方法加上@CrossOrigin注解就可以解决。 主要看下前端的代码: //调用远程地址,获取数据 get方法
前后端交互由于是在两个jvm上运行,所以必须要解决跨域问题。 如果springmvc用的是4.2版本以上的话,那么恭喜你,解决跨域的问题非常的简单。在controller上的方法加上@CrossOrigin注解就可以解决。
主要看下前端的代码:
//调用远程地址,获取数据 get方法 //返回response的json串 public getData(url: string): Promise<any> { return this.http .get(url) .toPromise() .then(response => response.json() as any) .catch(this.handleError); } delete(url: string,obj: any) { // url = `${url}/${obj.id}`; url = url + "/" + obj.id; return this.http.post(url,JSON.stringify(obj),{ headers: this.headers }) .toPromise().then(res => res.json() as any) .catch(this.handleError); } 后端的方法前加上注解 @RequestMapping(value = {"/deleteById/id/{id}"},method = RequestMethod.POST) @ResponseBody @CrossOrigin public ItooResult deleteById(@PathVariable String id,HttpServletResponse response) { 业务需求代码 } 问题就这样解决了。说下自己在解决过程中遇到的问题 1、修改了后端的解决跨域的代码,依旧没有解决跨域的问题,经过一番探索发现,把idea的服务停止后,仍旧可以访问到服务。于是意识到服务修改了根本没有起作用。于是重启电脑。 所以:每次停止服务时,都测试下,确保服务停止了。然后在启动,确保每次访问都是自己修改好的服务。 2、一点收获,对于非get的复杂请求,浏览器会先发送一个options请求,确保服务是否支持发杂请求,然后会再次发送一个真正你要发送的请求。比如:发送post请求,会先发送options的预请求,先确保服务支持post请求,然后会再发送一个post请求。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |