我需要使用基本身份验证来发出http请求,但我不知道如何进行。我使用的是ionic2,棱镜和打字稿。我的代码:
this.http.get("http://address")
.map(res => res.json())
.subscribe( data =>{
console.log(data);
});从Ionic文档中我看到了我所需要的,但是我对这些技术很陌生,我无法使用它:useBasicAuth(用户名,密码)。
我尝试过这些解决方案,但没有奏效:角2- Http POST请求参数
编辑
我一直在尝试下面的代码
let headers = new Headers();
headers.append('Content-Type', 'application/json');
headers.append('Authorization', 'Basic xxxxxxx=');
let options = new RequestOptions({ headers: headers });
this.http.get("http://VLCwebServerAddress",options)甚至是
this.http.get("http://VLCwebServerAddress",headers)
如果第二个参数是headers,我将得到响应401,因此Auth失败了。
如果第二个参数是选项,我得到的是Response for preflight has invalid HTTP status code 501,它与服务器端的CORS相关。
发布于 2017-06-27 15:44:14
我终于拿到了。我把角和Ionic2-cordova图书馆混在一起。
我没有注意到必须使用import { HTTP } from '@ionic-native/http';的
而不是使用import { Http, HttpModule } from '@angular/http';
(这是我在教程和其他问题中看到的代码)然后,我能够使用Ionic2的http文档中列出的所有方法
要记住,当在浏览器上运行ionic serve yourApp时,这个插件不能工作,而是在一个真正的设备上运行应用程序的时候。
我已经多次使用http角库对请求进行检查和尝试,但是一旦我向请求中添加了额外的内容,比如标题,它就会停止工作(不确定是否因为服务器)。谢谢你的回答。
发布于 2017-06-20 02:58:30
当登录成功时,您需要将用户名和令牌存储在会话存储或本地存储中。然后,您需要在请求的标题中发送它们。
getUserByName(username: string) {
let url="http://localhost:8088/rest/user/userName";
let header=new Headers({'Content-Type': 'application/json', 'Authorization': localStorage.getItem("token")});
return this.http.post(url, username, {headers: header});}
发布于 2017-06-21 10:14:12
只是简单地附加一个标题;
let headers = new Headers();
headers.append('Authorization', 'Basic' + btoa('username' + ":" + 'password'));
this.http.get(url, { headers: headers });https://stackoverflow.com/questions/44641904
复制相似问题