无法在 'XMLHttpRequest' 上执行 'setRequestHeader':对象的状态必须为 OPENED
Failed to execute 'setRequestHeader' on 'XMLHttpRequest': The object's state must be OPENED
我一直在使用 restful API get() 开发 angular 应用程序。我遇到了一些错误,比如 unauthorization error:401 已经解决了。现在我收到了这个错误,这很简单。我也尝试添加 CORS 包。
我一直在寻找解决方案,但没有成功。我已经重新编辑了我之前的问题,但似乎没有回应。
my-httpservice.service
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';
import { Http, Response, Headers, RequestOptions, URLSearchParams } from
'@angular/http';
@Injectable()
export class MyHttpserviceService {
constructor(private http:Http) {}
server_grid_Get(){
var request = new XMLHttpRequest();
var user = "Root";
var pass = "root";
//Use Basic authentication
request.setRequestHeader("Authorization", "Basic " + btoa(user + ":" + pass));
request.setRequestHeader('Content-Type','application/json');
request.setRequestHeader('Access-Control-Allow-Credential','true');
request.open("GET", "http://192.100.00.000:0000/_db/xxxxx_app/_api/document/wsdl_test/4934434",true);
return this.http.get("http://192.100.00.000:0000/_db/xxxx_app/_api/document/wsdl_test/4934434").map(response => response.json());
request.addEventListener('load', function(event) {
if (request.status >= 200 && request.status < 300) {
console.log(request.responseText);
} else {
console.warn(request.statusText, request.responseText);
}
});
request.send();
}
}
你应该使用类似的东西(angular 4.3+/确保你使用 HttpClientModule 而不是旧的 HttpModule)
@Injectable()
export class MyHttpserviceService {
constructor(private http:HttpClientModule) {}
private makeMyRequest () {
return this.http.get("http://192.100.00.000:0000/_db/xxxx_app/_api/document/wsdl_test/4934434", {
headers: new HttpHeaders()
.set('Authorization', 'Basic ' + btoa(user + ':' + pass))
.set('Content-Type','application/json')
.set('Access-Control-Allow-Credential','true')
});
}
}
然后在组件中
<yourservice>.makeMyRequest().subscribe(data => {
// anything you want
});
在我的例子中,我的 header 在授权的末尾有一个 \n
字符 header 值它导致了所有的混乱
我一直在使用 restful API get() 开发 angular 应用程序。我遇到了一些错误,比如 unauthorization error:401 已经解决了。现在我收到了这个错误,这很简单。我也尝试添加 CORS 包。
我一直在寻找解决方案,但没有成功。我已经重新编辑了我之前的问题,但似乎没有回应。
my-httpservice.service
import { Injectable } from '@angular/core';
import 'rxjs/add/operator/map';
import { Http, Response, Headers, RequestOptions, URLSearchParams } from
'@angular/http';
@Injectable()
export class MyHttpserviceService {
constructor(private http:Http) {}
server_grid_Get(){
var request = new XMLHttpRequest();
var user = "Root";
var pass = "root";
//Use Basic authentication
request.setRequestHeader("Authorization", "Basic " + btoa(user + ":" + pass));
request.setRequestHeader('Content-Type','application/json');
request.setRequestHeader('Access-Control-Allow-Credential','true');
request.open("GET", "http://192.100.00.000:0000/_db/xxxxx_app/_api/document/wsdl_test/4934434",true);
return this.http.get("http://192.100.00.000:0000/_db/xxxx_app/_api/document/wsdl_test/4934434").map(response => response.json());
request.addEventListener('load', function(event) {
if (request.status >= 200 && request.status < 300) {
console.log(request.responseText);
} else {
console.warn(request.statusText, request.responseText);
}
});
request.send();
}
}
你应该使用类似的东西(angular 4.3+/确保你使用 HttpClientModule 而不是旧的 HttpModule)
@Injectable()
export class MyHttpserviceService {
constructor(private http:HttpClientModule) {}
private makeMyRequest () {
return this.http.get("http://192.100.00.000:0000/_db/xxxx_app/_api/document/wsdl_test/4934434", {
headers: new HttpHeaders()
.set('Authorization', 'Basic ' + btoa(user + ':' + pass))
.set('Content-Type','application/json')
.set('Access-Control-Allow-Credential','true')
});
}
}
然后在组件中
<yourservice>.makeMyRequest().subscribe(data => {
// anything you want
});
在我的例子中,我的 header 在授权的末尾有一个 \n
字符 header 值它导致了所有的混乱