Angular 调用 Bing 地图位置 REST 方法时出现 HttpClient 问题
Angular HttpClient issue when calling Bing Maps Locations REST methods
我已经调用了使用 Angular 4 Http 服务制作的 Bing 地图,它工作正常:
this.http.get("{absolute URL of Bing Maps REST Locations, with options and key}")
我正在尝试更改调用以使用 Angular 4.3 中引入的 HttpClient 服务,但是在尝试相同的代码时:
this.httpClient.get("{absolute URL of Bing Maps REST Locations, with options and key}")
然后请求与preflight OPTIONS请求一起发送,bing maps显然拒绝了。
我试图观察请求而不是 body,请求文本响应,并强制接受 header 文本,但没有成功。
Headers 的 Http 请求(工作):
Accept: application/json, text/plain, */*
Origin: http://localhost:4200
Referer: http://localhost:4200/
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Headers 的 HttpClient 请求(不工作):
Access-Control-Request-Headers: authorization
Access-Control-Request-Method: GET
Origin: http://localhost:4200
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
知道为什么 HttpClient 请求与 Http 请求如此不同吗?如何强制 HttpClient 跳过预检 OPTIONS 请求?我错过了什么吗?
提前感谢您的帮助
我终于找到了解决方案(虽然我还没有发现为什么在使用默认设置构建请求时 HttpClient 的行为与 Http 如此不同)。
Bing Maps V8 REST API 也可以使用 jsonp 调用参数调用:
let url = '...base url and query params...&key={MyBingMapsKey}&jsonp=JSONP_CALLBACK';
this.httpClient.jsonp(url, 'JSONP_CALLBACK');
我已经调用了使用 Angular 4 Http 服务制作的 Bing 地图,它工作正常:
this.http.get("{absolute URL of Bing Maps REST Locations, with options and key}")
我正在尝试更改调用以使用 Angular 4.3 中引入的 HttpClient 服务,但是在尝试相同的代码时:
this.httpClient.get("{absolute URL of Bing Maps REST Locations, with options and key}")
然后请求与preflight OPTIONS请求一起发送,bing maps显然拒绝了。
我试图观察请求而不是 body,请求文本响应,并强制接受 header 文本,但没有成功。
Headers 的 Http 请求(工作):
Accept: application/json, text/plain, */*
Origin: http://localhost:4200
Referer: http://localhost:4200/
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
Headers 的 HttpClient 请求(不工作):
Access-Control-Request-Headers: authorization
Access-Control-Request-Method: GET
Origin: http://localhost:4200
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
知道为什么 HttpClient 请求与 Http 请求如此不同吗?如何强制 HttpClient 跳过预检 OPTIONS 请求?我错过了什么吗?
提前感谢您的帮助
我终于找到了解决方案(虽然我还没有发现为什么在使用默认设置构建请求时 HttpClient 的行为与 Http 如此不同)。
Bing Maps V8 REST API 也可以使用 jsonp 调用参数调用:
let url = '...base url and query params...&key={MyBingMapsKey}&jsonp=JSONP_CALLBACK';
this.httpClient.jsonp(url, 'JSONP_CALLBACK');