Mirki, problem mam z zapytaniem HTTP. Próbuję wysłać zapytanie GET z poziomu JavaScripta kilkoma metodami - używając czystego JSa lub P5.js (dokładniej funkcji httpGet lub loadJSON).

W momencie kiedy definiuję typ danych jako JSON (w czystym JSie albo w P5) dostaję powiadomienie o tym, że brak w nagłówku pozwolenia na „Access-Control-Allow-Origin". Czyli wydaje się, że rozwiązaniem jest wyciąganie JSONP zamiast samego JSON, ale...
Gdy próbuję wyciągnąć JSONP (to już tylko za pomocą P5 udało mi się zrobić) dostaję bardzo dziwny syntax error. I do takiego pliku przenosi mnie Firefox, po kliknięciu w to "getdata:1:6" po prawej stronie. Czyli dane przychodzą poprawnie, nawet są poprawnie sformatowane jako JSON (skopiuję żeby nie było wątpliwości: {"cid":4711,"data":{"value":"0860"},"code":200}). Ale z jakiegoś powodu powodują syntax error jakby były źle interpretowane.

Co robić jak żyć? Od razu mówię, że dodanie na serwerze tego „Access-Control-Allow-Origin" nie wchodzi w grę, gdyż tymi zapytaniami próbuję się dostać do takiego modułu, gdzie niemal na pewno nie
Gumaa - Mirki, problem mam z zapytaniem HTTP. Próbuję wysłać zapytanie GET z poziomu ...

źródło: comment_Jj23BOqvmPAbjogOJIplUcHTCCjDnZmV.jpg

Pobierz
  • 3
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@Gumaa: Dostajesz syntax error, bo nie rozumiesz na czym polega JSONP. JSONP to trick, w którym przesyłane przez serwer dane zostają owrapowane w funkcję JSową dostępną globalnie i umieszczone w tagu `
  • Odpowiedz
@Gumaa: nie da się. Nie ma co tu więcej opisywać, stawiasz sobie swój własny serwer, który odbierze request z twojego skryptu i przekaże go dalej w niezmienionej formie, a następnie otrzyma odpowiedź i również prześle do twojego skryptu w niezmienionej formie. Tyle w skrócie, a nt. konkretnych implementacji i, zapewne, gotowców, niech się wypowie Google.
  • Odpowiedz
jsoncallback a nie callback?


@rbielawski: @kmiasko: A niech mnie dunder świśnie! Wystarczyło zmienić jsoncallback(tak w sieci było pisało) na callback. W prawdzie teraz muszę jakoś obsłużyć te anonimowe nazwy funkcji, bo jak podam swoją w urlu to rzuca się o ten oridżin.

Więc dodałem ten nagłówek, co Rafał zaproponował i mogę nadać swoją nazwę funkcji. Wtedy jednak success nie strzela, ale na ten przykład w .complete dostaję 'responseText' który jest ewidentnie modyfikowany przez node, co oznacza, że to chyba prawidłowy sposób jazdy. (choć śmieszne, że success
  • Odpowiedz
@anonim1133: przeglądarka też musi się zgodzić, ale w to już nie wnikałem za bardzo. Generalnie musi obsługiwać CORS (czyli te nagłówki).

Cross-Origin Resource Sharing
The second technique for relaxing the same-origin policy is standardized under the name Cross-Origin Resource Sharing. This standard extends HTTP with a new Origin request header and a new Access-Control-Allow-Origin response header. It allows servers to use a header to explicitly list origins that may request
  • Odpowiedz