加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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请求。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读