获取请求时的angular2基本授权 - 405
angular2 basic authorization on get request - 405
我正在尝试获取基本授权以处理 Get 请求,但出现 2 个异常:
OPTIONS http://localhost/drupal/user/1?_format=json
XMLHttpRequest cannot load http://localhost/drupal/user/1?_format=json. Response for preflight has invalid HTTP status code 405
我在 drupal 8 后端使用 angular2
这是我的服务
var _baseUrl = "http://localhost/drupal";
@Injectable()
export class DrupalService {
private actionUrl: string;
constructor(private _http: Http, private _apiUrl: DrupalApi) {
this.actionUrl = _baseUrl + _apiUrl;
}
authHeaders() {
let username = 'username';
let password = 'password';
let token = btoa(username + ':' + password);
var headers = new Headers();
headers.append('Authorization', 'Basic ' + token);
headers.append('Content-Type', 'application/json');
headers.append('Accept', 'application/json');
return headers;
}
public GetSingle = (id: number): Observable<Response> => {
return this._http.get(this.actionUrl + id + '?_format=json'
, {headers: this.authHeaders()}).map(res => res.json());
}
}
但是当我尝试来自邮递员应用程序的相同请求时它有效
我该如何解决?
在 Postman 中,您正在发送 header:
Authorization: Basic bXVyaGFmOmhleGFkZWNpbWFsMDU
但是在angular你超过了:
headers.append('Authorization', 'Basic ' + btoa('bXVyaGFmOmhleGFkZWNpbWFsMDU'));
最终会是:
Authorization: Basic YlhWeWFHRm1PbWhsZUdGa1pXTnBiV0ZzTURV
所以,不要将字符串转换为 base64
headers.append('Authorization', 'Basic bXVyaGFmOmhleGFkZWNpbWFsMDU');
更新
错误代码 405 表示:Method Not Allowed
,这意味着 drupal 不允许 OPTIONS
请求。我以前没有使用过 Drupal。但是,应该有一种方法允许 OPTIONS
请求。
我正在尝试获取基本授权以处理 Get 请求,但出现 2 个异常:
OPTIONS http://localhost/drupal/user/1?_format=json
XMLHttpRequest cannot load http://localhost/drupal/user/1?_format=json. Response for preflight has invalid HTTP status code 405
我在 drupal 8 后端使用 angular2
这是我的服务
var _baseUrl = "http://localhost/drupal";
@Injectable()
export class DrupalService {
private actionUrl: string;
constructor(private _http: Http, private _apiUrl: DrupalApi) {
this.actionUrl = _baseUrl + _apiUrl;
}
authHeaders() {
let username = 'username';
let password = 'password';
let token = btoa(username + ':' + password);
var headers = new Headers();
headers.append('Authorization', 'Basic ' + token);
headers.append('Content-Type', 'application/json');
headers.append('Accept', 'application/json');
return headers;
}
public GetSingle = (id: number): Observable<Response> => {
return this._http.get(this.actionUrl + id + '?_format=json'
, {headers: this.authHeaders()}).map(res => res.json());
}
}
但是当我尝试来自邮递员应用程序的相同请求时它有效
我该如何解决?
在 Postman 中,您正在发送 header:
Authorization: Basic bXVyaGFmOmhleGFkZWNpbWFsMDU
但是在angular你超过了:
headers.append('Authorization', 'Basic ' + btoa('bXVyaGFmOmhleGFkZWNpbWFsMDU'));
最终会是:
Authorization: Basic YlhWeWFHRm1PbWhsZUdGa1pXTnBiV0ZzTURV
所以,不要将字符串转换为 base64
headers.append('Authorization', 'Basic bXVyaGFmOmhleGFkZWNpbWFsMDU');
更新
错误代码 405 表示:Method Not Allowed
,这意味着 drupal 不允许 OPTIONS
请求。我以前没有使用过 Drupal。但是,应该有一种方法允许 OPTIONS
请求。