带有 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(<my_url>, <callback_param>)
时发送一些参数,而不是在拦截器“拦截”我的请求(以及所有 http 请求)时,因为拦截器无法获得我想要发送的参数特定的 http.jsonp 调用。
我以为你会理解,但显然不是。如果您想为请求设置标头,而 jsonp
函数不允许您这样做,那么您应该使用拦截器来拦截请求并自己添加标头。如果您过滤为仅适用于此请求(过滤方法、url、有效负载、与其他请求不同的任何内容),它不会对每个请求都执行此操作。
我正在寻找答案,而不是一个糟糕的解决方法。以上是关于带有 HttpHeaders 的 Angular 5 JSONP 请求的主要内容,如果未能解决你的问题,请参考以下文章
Angular 12 TypeError:无法在 HttpHeaders.applyUpdate 处读取 null 的属性(读取“长度”)