/ / Dlaczego ten adres URL JSONP jest napisany w ten sposób? - cors, jsonp

Dlaczego ten URL JSONP jest tak napisany? - cors, jsonp

Teraz próbuję wykonać losowe wyzwanie generatora cytatów z freecodecamp. Mam jednak problemy z uzyskaniem wycen z witryny http://api.forismatic.com z powodu CORS ... natknąłem się na czyjeś rozwiązanie, ale nie rozumiem, dlaczego zawarł zapytanie jsonp=? na końcu adresu URL.

On stworzył:

// Random Quote Generator
var url = "http://api.forismatic.com/api/1.0/?method=getQuote&key=457653&format=jsonp&lang=en&jsonp=?";

Śledzę wszystko oprócz jsonp=? na końcu ... Wiem, że musi istnieć oddzwonienie i próbowałem go zastąpić callback=? ale potem wystąpił błąd:

"Refuse to execute script from (data resource) because its MIME type ("text/html") is not executable, and strict MIME type checking is enabled."

Odpowiedzi:

0 dla odpowiedzi № 1

Według dokumentów w http://forismatic.com/en/api/:

jsonp = <ciąg> - nazwa funkcji zwrotnej, używana tylko w formacie jsonp

Więc mają tylko jsonp parametr, w którym do tej samej rzeczy używają inne interfejsy API callback.

I tak podane method=getQuote&key=457653&format=jsonp&lang=en&jsonp=?dosłownie „?”zwraca API jako nazwa funkcji zwrotnej:

$ curl "http://api.forismatic.com/api/1.0/?method=getQuote&key=457653&format=jsonp&lang=en&jsonp=?"

?({"quoteText":"I have done my best: that is about all the philosophy of living one needs.","quoteAuthor":"Lin-yutang","senderName":"","senderLink":"","quoteLink":"http://forismatic.com/en/475d78775d/"})

Innymi słowy, nie ma nic magicznego w nazwie parametru „callback„- nie ma standardu, który nakazuje stosowanie nazwy parametru, więc każdy dostawca interfejsu API może wybrać dowolną nazwę, jaką chce - tak jak forismatic.com dla swojego interfejsu API.