在我的 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响应
答案 0 :(得分:2)
根据您提供的信息,我的猜测是您遇到了跨源请求问题。请确保您的控制器中允许该方法的跨源请求。只需使用
来激活方法@CrossOrigin
这基本上会向您的服务器表明应该响应浏览器它接受来自任何域的请求。您还可以限制要允许的域。更多http://docs.spring.io/spring/docs/current/spring-framework-reference/html/cors.html
如果您未在服务器上启用此功能,则由于安全策略,浏览器将无法完成请求。