Ошибка Angular 6: внедренный сценарий JSONP не вызывает обратный вызов - PullRequest
0 голосов
/ 29 декабря 2018

Работаю над проектом Angular 6 и пытаюсь получить доступ к общедоступному API, поэтому мне нужно использовать JSONP, чтобы обойти CORS.Получили следующую ошибку с моим кодом: «Ошибка: JSONP внедрил сценарий не вызвал обратный вызов».Я считаю, что это проблема с именем параметра обратного вызова.

Я потратил много времени на изучение подобных проблем здесь и на Github, особенно это: https://github.com/angular/angular/issues/8153 ипопытался заменить JSONP_CALLBACK на:

ng_jsonp .__ req $ {this.times} .finished

__ 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()
    }
}    

1 Ответ

0 голосов
/ 18 февраля 2019

У меня была похожая проблема, и при использовании 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

в строке 1121 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'
...