Angular http post 未发送 headers
Angular http post not sending headers
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);
}
我正尝试将 headers 与我的 post 请求一起发送,但我无法在我的请求中找到任何 headers。上面的代码哪里可能出错。
下面是 chrome 中的附加请求。
您附加的图片是 OPTION 请求,您的 header 将显示在 POST 请求中。
选项请求获得授权后,您的 post 请求将被执行。
问题是您发出的请求未经授权,请检查服务器端的代码,这不是 angular 的问题,代码很好。
它会起作用。
@Vivek 的回复是正确的。
请允许我详细介绍一下,以便您更好地了解正在发生的事情:
浏览器使用 OPTIONS http 动词执行预检请求,这是 XHR object 发出的额外请求,以确保允许实际发出请求。
没有预检,除非您设置自定义 headers,当设置这些时,就像您对授权 header 所做的那样,将执行 OPTIONS 请求。这不包括@Vivek 在他的回复中指定的那些习俗 headers。一旦你弄清楚为什么你的端点没有响应预检请求,并且该请求成功,你将看到授权 header 和你的基本身份验证凭据值。
这是一个 jsfiddle,我在这里向虚拟 api 发出请求,因此您会看到它在预检请求成功后起作用。请参阅 app.ts
中的代码
Here 您可以阅读有关该预检请求的更多信息。
查看chrome的网络监视器:
所以,只需修复您的 api 资源的任何问题,然后您就可以像@Vivek 提到的那样正常工作。
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);
}
我正尝试将 headers 与我的 post 请求一起发送,但我无法在我的请求中找到任何 headers。上面的代码哪里可能出错。
下面是 chrome 中的附加请求。
您附加的图片是 OPTION 请求,您的 header 将显示在 POST 请求中。
选项请求获得授权后,您的 post 请求将被执行。
问题是您发出的请求未经授权,请检查服务器端的代码,这不是 angular 的问题,代码很好。
它会起作用。
@Vivek 的回复是正确的。
请允许我详细介绍一下,以便您更好地了解正在发生的事情:
浏览器使用 OPTIONS http 动词执行预检请求,这是 XHR object 发出的额外请求,以确保允许实际发出请求。
没有预检,除非您设置自定义 headers,当设置这些时,就像您对授权 header 所做的那样,将执行 OPTIONS 请求。这不包括@Vivek 在他的回复中指定的那些习俗 headers。一旦你弄清楚为什么你的端点没有响应预检请求,并且该请求成功,你将看到授权 header 和你的基本身份验证凭据值。
这是一个 jsfiddle,我在这里向虚拟 api 发出请求,因此您会看到它在预检请求成功后起作用。请参阅 app.ts
Here 您可以阅读有关该预检请求的更多信息。
查看chrome的网络监视器:
所以,只需修复您的 api 资源的任何问题,然后您就可以像@Vivek 提到的那样正常工作。