Http.post()AJAX没有来自JSP / Spring服务器的响应

时间:2017-03-02 01:12:30

标签: php spring jsp angular ionic2

在我的 Ionic 2 应用中,我使用以下代码块从示例网站www.my-website.com/member/loginPersist.do获取数据:

  

/member/loginPersist 是一个Spring MVC控制器

登录-service.ts

 private GetUser(user : User): Promise<any> {
    let options = this.makeHeader("post");
    let x = this.http.post("http://my-website.com/member/loginPersist.do", this.serialize(user) ,options).toPromise().catch(this.handleError);

    return x;

  }
private makeHeader(method : string){
  let headers = new Headers({
    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
    'Accept': 'application/json, text/javascript, */*; q=0.01',
    'X-Requested-With': 'XMLHttpRequest'

  });
  let options = new RequestOptions({ headers: headers });

  return options;
}
  

但是我得到没有回复 /空白(没有json结果)和状态代码是200 OK。但响应是为空

但如果我将网址更改为www.site.com/test.php,我会收到来自 PHP 的回复。所以我知道我的http请求代码不是问题。

  

这个问题是否与JSP / Spring服务器有关?以及如何获得JSON响应

1 个答案:

答案 0 :(得分:2)

根据您提供的信息,我的猜测是您遇到了跨源请求问题。请确保您的控制器中允许该方法的跨源请求。只需使用

来激活方法
@CrossOrigin

这基本上会向您的服务器表明应该响应浏览器它接受来自任何域的请求。您还可以限制要允许的域。更多http://docs.spring.io/spring/docs/current/spring-framework-reference/html/cors.html

如果您未在服务器上启用此功能,则由于安全策略,浏览器将无法完成请求。