正在研究Angular 6项目并尝试访问公共API,因此我需要使用JSONP来解决CORS。我的代码收到以下错误: “错误:JSONP注入的脚本未调用回调”。 我相信这是回调参数名称的问题。
我在这里和Github上花费了大量的时间来研究类似的问题,最著名的是:https://github.com/angular/angular/issues/8153,并尝试将JSONP_CALLBACK替换为:
ng_jsonp .__ req $ {this.times}。完成
__ ng_jsonp ____ req6_finished
,而完全省略了回调参数
但是我还没有找到成功。
import { Injectable } from '@angular/core';
import { HttpClient } from '@angular/common/http';
import { map } from "rxjs/operators";
export class CoursesAPIService {
constructor(private http: HttpClient) {}
getData() {
var url = 'http://web-app.usc.edu/web/soc/api/classes/?callback=JSONP_CALLBACK'
console.log("calling: " + url)
return this.http.jsonp(url, "callback")
.pipe(map(data => {
console.log("Inside map")
console.log(data)
})
).subscribe()
}
}
答案 0 :(得分:1)
我有一个类似的问题,使用HttpClient.jsonp()时对我来说,您不应传递callback = JSONP_CALLBACK参数和值。
// try this instead
var url = 'http://web-app.usc.edu/web/soc/api/classes/?'
如果您在斜角github https://github.com/angular/angular/blob/master/packages/common/http/src/client.ts中查看源代码
在1461(,因为本节仍在进行中,只是搜索jsonp()函数),您会注意到他们将发送该参数再次。并且您当前的url变量将变为:
// this is what's probably giving you issues after the jsonp function's internal functions are processed
'http://web-app.usc.edu/web/soc/api/classes/?callback=JSONP_CALLBACK&callback=JSONP_CALLBACK'