带有 HttpHeaders 的 Angular 5 JSONP 请求

Posted

技术标签:

【中文标题】带有 HttpHeaders 的 Angular 5 JSONP 请求【英文标题】:Angular 5 JSONP request with HttpHeaders 【发布时间】:2018-07-09 05:27:47 【问题描述】:

我正在尝试使用一些 HTTP 标头参数执行 JSONP 请求。 http.get 很简单:

let header = new HttpHeaders();
header.append(<header_param_name>, <header_param_value>);

this.http.get(<my_url>,  headers: header)

但是当我尝试用 jsonp 做同样的事情时...

this.http.jsonp(<my_url>, <callback_param>)

“选项”参数在哪里??? O_o 如何在 JSONP 请求的请求头中发送参数?

感谢回复

【问题讨论】:

嗨,也许你可以看看 jsonp 的 angular 文档:angular.io/api/http/Jsonp。 RequestOptions 包含标头 该类在 Angular 5 中已弃用 检查angular.io/api/http/Jsonp#deprecation-notes 如果您遵循弃用说明,您会得到我的问题。我尝试使用@angular/common/http,但在这个类中没有“选项”参数! 【参考方案1】:

official documentation

必须安装合适的拦截器(例如通过 HttpClientJsonpModule)。如果没有到达这样的拦截器,那么 JSONP 请求可能会被配置的后端拒绝。

【讨论】:

HttpClientJsonpModule 已正确安装,所有 jsonp 请求均已正确执行。我的问题不一样!我想在 JSONP 请求中的 HTTP 标头中发送一个参数.. 你知道什么是http拦截器吗? HTTP Interceptor 这不是我问题的正确答案。我想在拨打电话this.http.jsonp(&lt;my_url&gt;, &lt;callback_param&gt;) 时发送一些参数,而不是在拦截器“拦截”我的请求(以及所有 http 请求)时,因为拦截器无法获得我想要发送的参数特定的 http.jsonp 调用。 我以为你会理解,但显然不是。如果您想为请求设置标头,而 jsonp 函数不允许您这样做,那么您应该使用拦截器来拦截请求并自己添加标头。如果您过滤为仅适用于此请求(过滤方法、url、有效负载、与其他请求不同的任何内容),它不会对每个请求都执行此操作。 我正在寻找答案,而不是一个糟糕的解决方法。

以上是关于带有 HttpHeaders 的 Angular 5 JSONP 请求的主要内容,如果未能解决你的问题,请参考以下文章

Angular 12 TypeError:无法在 HttpHeaders.applyUpdate 处读取 null 的属性(读取“长度”)

Angular 无法获取响应状态文本

Angular CORS 请求被阻止

Angular 5 HTTPClient 基本授权不起作用

如何在 Angular 5 的标头中添加 CORS 请求

angular7 ag-grid this.http 是未定义的错误