【问题标题】:Http.post() AJAX no response from JSP/Spring serverHttp.post() AJAX 没有来自 JSP/Spring 服务器的响应
【发布时间】:2017-03-02 12:00:53
【问题描述】:

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

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

login-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。但响应是empty

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

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

【问题讨论】:

  • 鉴于你这里有什么,这不好说。请注意,将未绑定的方法作为回调传递是一种危险的做法。
  • 对不起,如果不关注。未绑定方法是什么意思?
  • 查找“JavaScript 中的动态this 绑定”。那么你将有更多理由怀疑 Angular 教程。

标签: php spring jsp angular ionic2


【解决方案1】:

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

注释方法
@CrossOrigin

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-18
    • 2021-11-03
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多