Angular 角度http post不发送头
我正在尝试发送我的post请求的标题,但在我的请求中找不到任何标题。上述代码中哪里可能有错误。 以下是随附的chrome请求。Angular 角度http post不发送头,angular,angular2-routing,angular-http,Angular,Angular2 Routing,Angular Http,我正在尝试发送我的post请求的标题,但在我的请求中找不到任何标题。上述代码中哪里可能有错误。 以下是随附的chrome请求。 您附加的图像是选项请求,您的标题将显示在POST请求中 一旦选项请求获得授权,之后将发出post请求 问题是您提出的请求未经授权,请检查服务器端的代码,这不是角度的问题,代码是好的 它会起作用的。@Vivek的回答是正确的 请允许我更详细地介绍,以便您更好地了解正在发生的事情: 浏览器使用选项http谓词执行飞行前请求,这是XHR对象为确保允许其实际发出请求而发出的附加
您附加的图像是选项请求,您的标题将显示在POST请求中 一旦选项请求获得授权,之后将发出post请求 问题是您提出的请求未经授权,请检查服务器端的代码,这不是角度的问题,代码是好的
它会起作用的。@Vivek的回答是正确的 请允许我更详细地介绍,以便您更好地了解正在发生的事情: 浏览器使用选项http谓词执行飞行前请求,这是XHR对象为确保允许其实际发出请求而发出的附加请求 除非您设置自定义标头,否则不会进行预飞行。当设置这些标头时,就像您对授权标头所做的那样,将执行选项请求。这一个不包括@Vivek在其响应中指定的海关标题。一旦您弄清楚端点没有响应飞行前请求的原因,并且该请求成功,您将看到带有基本身份验证凭据值的授权标头 这里是一个示例,我向一个虚拟api发出请求,所以您可以看到它在飞行前请求成功后工作。请参见
app.ts
您可以阅读更多关于飞行前请求的信息
看看chrome的网络监视器:
因此,只要修复api资源的任何错误,您的api就可以像@Vivek提到的那样正常工作。您附带的图像是OPTION request,您的标题将显示在POST request中。
private handleError (error: any) {
// In some advance version we can include a remote logging of errors
let errMsg = (error.message) ? error.message :
error.status ? `${error.status} - ${error.statusText}` : 'Server error';
console.error(errMsg); // Right now we are logging to console itself
return Observable.throw(errMsg);
}
startCrawlJob(crawlvalues,username,password) {
let headers = new Headers({ 'Accept': 'application/json' });
headers.append('Authorization', 'Basic ' +
btoa(username+':'+password));
let options = new RequestOptions({ headers: headers });
return this.http
.post('http://localhost:8090/Crawler_p.html',crawlvalues, options).map(res =>
res.json()
).catch(this.handleError);
}