如何在angular 2中设置beforesend标头
我是安格拉尔的新手。我想使用angular2制作一个http post。Ajax请求同样是-如何在angular 2中设置beforesend标头,angular,xmlhttprequest,Angular,Xmlhttprequest,我是安格拉尔的新手。我想使用angular2制作一个http post。Ajax请求同样是- $.ajax({ url: apiUrl, type: 'Post', dataType: "json", data: request, beforeSend: function (xhr) { xhr.setRequestHeader("Authorization-ApiKey", 'Ak12mr27Xwg@d89ul'); },
$.ajax({
url: apiUrl,
type: 'Post',
dataType: "json",
data: request,
beforeSend: function (xhr) {
xhr.setRequestHeader("Authorization-ApiKey", 'Ak12mr27Xwg@d89ul');
},
success: function (response) {
if (response.ErrorCode != 0) {
alert(response.ErrorMessage)
}
else {
}
},
error: function (a) {
alert('Invalid Action.');
}
});
实际上,我不知道如何在angular2中设置beforesend标头。我试过了,但没用。它的给予-
未能对“XMLHttpRequest”执行“open”:无效的URL“和响应状态:500 URL的内部服务器错误: ****i/api/R****1/登录 我的PostAPI的angular2代码-
import { Injectable } from '@angular/core';
import { Http, Headers, Response, RequestOptions } from '@angular/http';
import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/map'
@Injectable()
export class AuthenticationService {
constructor(private http: Http) { }
login(username: string, password: string) {
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
headers.append('Authorization-ApiKey','Ak12mr27Xwg@d89ul');
headers.append('Accept', 'application/json');
let options = new RequestOptions({ headers: headers });
return this.http.post('http://111.118.241.110/B****i/api/R******1/Login', {
UserName: username, Password: password } , options)
.map((response: Response) => {
let user = response;
});
}
}
我非常确定,已经处理了所有CORS启用API的相关问题。解决方案是什么。
附言:这对GET请求很有效。
这对我来说很有效,我希望它能帮助我
import { Injectable } from '@angular/core';
import { Http, Response, Headers, HttpModule, RequestOptions } from '@angular/http';
@Injectable()
export class ClassName{
public url:string="url";
constructor(private _http:Http) { }
authenticate(userName, password){
console.log("user:" + userName);
console.log("pass:" + password);
var authdata = window.btoa(userName + ':' + password);
var header = new Headers();
header.append('Authorization', 'Basic ' + authdata);
header.append('contentType','application/json; charset=utf-8');
header.append('Accept','application/json');
header.append('Access-Control-Allow-Origin', '*');
var option = new RequestOptions();
option.headers = header;
console.log(header);
return this._http.get(this.url + 'Method', option)
.map((response:Response)=>response.json());
}
}
最后一个答案对我有用!但我使用代币来改进它:
.....
authenticate(token){
console.log("user:" + token);
var authdata = window.btoa(token+ ':');
console.log("authdata:" + authdata);
var header = new Headers();
header.append('Authorization', 'Basic ' + authdata);
header.append('contentType','application/json; charset=utf-8');
header.append('Accept','application/json');
header.append('Access-Control-Allow-Origin', '*');
var option = new RequestOptions();
option.headers = header;
console.log(header);
return this.http.get(this.baseUrl, option)
.map((response:Response)=>response.json());
}
....头的使用在角度6中折旧。
使用HttpHeader:
import { HttpHeaders, HttpClient } from '@angular/common/http';
constructor(private http: HttpClient) {
// Setting up the header
this.header = new HttpHeaders().set('Content-Type', 'application/x-www-form-urlencoded')
this.header = this.header.append('Accept', 'application/json');
this.header = this.header.append('Authorization', yourAuthVariable);
}