Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Nedaří se mi načíst odpověď přes http get

Snažím se načíst odpověď z URL https://pastebin.com/raw/5kG3bsEy

V prohlížeči Chrome to funguje OK, stejně tak v MS Edge i v klientovi Postman.
Ovšem, když se snažím tu odpověď načíst programově ve VueJS s využitím vue-resource.js, vrací mi to chybu.

Tady je kód funkce, která (ne)čte data:

    getData: function(){
      var url = "https://pastebin.com/raw/5kG3bsEy";
      var options =  {
        "method"  : "GET",   
        "followRedirects" : true,
        "muteHttpExceptions": true,
      }; 

      var headers = {
        "Accept": "*/*",
        "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.87 Safari/537.36",
        "Host": "pastebin.com",
        "Connection": "keep-alive",
        "Accept-Encoding": "gzip, deflate, br"
      };

      console.log("loading...");
      this.$http.get(url, options, headers).then(function (response) {
            console.log(response.data); 
            this.md = response.data;
      }).catch(function(error) {
        console.log("Error: ", error)
      });
    }

A dostanu odpověď - to co si zobrazím v konzoli:

Error: { url: 'https://pastebin.com/raw/5kG3bsEy',
ok: false,
status: 0,
statusText: '',
headers: { map: { '': [Array] } },
body: '',
bodyText: '' }

Přitom ale, když si načtu ve stejné funkci (!) URL třeba https://api.coindesk.com/v1/bpi/currentprice.json, pak dostanu odpověď s daty.

Věděl by někdo, kde je chyba? Mám něco v kódu špatně? Nebo mi prostě protistrana, tj. https://pastebin.com/raw/5kG3bsEy schválně vrací chybu?
Už si fakt nevím rady...

Předmět Autor Datum
V pastebinu máš text, v tom druhom odkaze JSON... resp.data v Axiosu standardne odkazuje na objekt,…
Mlocik97 12.02.2020 00:02
Mlocik97
Inu, nepoužívám axios, ale vue-resource.js; ty hlavičky jsem přidával postupně právě proto, že mi to…
Pavel 12.02.2020 08:04
Pavel
Kdybys používal Linux, tak by ti to fungovalo. ;-)
host 12.02.2020 08:08
host
To neznám... hm... ja už som Vue prestal riešiť skôr než začal (momentálne som sa zamiloval do Svelt…
Mlocik97 12.02.2020 09:07
Mlocik97
On ten kód je podle všeho v principu dobře, z jiných URL tu odpověď dostanu. This je v pořádku.
Pavel 12.02.2020 11:15
Pavel
no ja momentálne používam Svelte/Sapper a tieto ajax/rest veci riešim cez fetch(), skúšal som v takt…
Mlocik97 12.02.2020 11:49
Mlocik97
Vyzkoušel jsem ještě načíst místo textu objekt JSON a opět stejná chyba. Vysvětlení viz hynajs. Škod…
Pavel 23.02.2020 10:45
Pavel
V rychlosti jsem zkusil PHP a k úspěchu stačily tyto řádky: $url="https://pastebin.com/raw/5kG3bsE…
hynajs 12.02.2020 08:51
hynajs
Díky za ověření, v PHP ti to teda funguje dobře. Pořád nevím co ještě udělat, abych to načetl ve svý…
Pavel 12.02.2020 08:54
Pavel
Chyba asi nebude v kódu. Když použiju jQuery k jednoduchému $.ajax({ url: 'http://pastebin.com/raw…
hynajs 12.02.2020 09:46
hynajs
Až teď mne napadlo podívat se do konzole a vidím vysvětlení: Cross-Origin požadavek byl zablokován:…
hynajs 12.02.2020 10:21
hynajs
A co zkusit použít místo var url = "https://pastebin.com/raw/5kG3bsEy"; toto var url = "https://c…
host 12.02.2020 10:25
host
Opět error: Cross-Origin požadavek byl zablokován: Same Origin zásada nepovoluje načtení vzdáleného…
hynajs 12.02.2020 10:30
hynajs
Hm, tak se použití PHP asi opravdu nevyhne. :-| https://enable-cors.org/server_php.html
host 12.02.2020 10:40
host
Zkusil jsem https://cors.io/?https://pastebin.com/raw/5kG3bsEy i přidat hlavičku "Access-Control-Al…
Pavel 12.02.2020 11:13
Pavel
Ta hlavička musí být v odpovědi, jak jsem psal - takže by ji tam musel přidat tvůrce pastebin.com .…
hynajs 12.02.2020 11:18
hynajs
On ten server i odpoví, prohlížeč odpověď dostane, ale zablokuje ji. Nevím, zda ti dost rozumím. Kd…
Pavel 12.02.2020 11:21
Pavel
Ale tam žádost netvoříš a odpověď nečteš Javascriptem. Podívej se, prosím, do web-konzole - určitě u…
hynajs 12.02.2020 11:29
hynajs
Jestli to správně chápu: Já pošlu požadavek a ten je OK, server pošle odpověď a ta je taky OK. Na mé…
Pavel 12.02.2020 11:38
Pavel
Ano - jinak si hlášení neumím vysvětlit. Nejenom Chrome. Psal jsem hlášení Firefox. V Chrome vypadá…
hynajs 12.02.2020 12:26
hynajs
https://pastebin.com/api
Mlocik97 23.02.2020 11:12
Mlocik97
Připoj, prosím, ještě funkční příklad kódu v klientském Javascriptu. Zdůraznil jsem v klientském - o…
hynajs 23.02.2020 11:34
hynajs
Pujde ti to pouze v PRO verzi pastebin, ta pridava CORS hlavicky. https://pastebin.com/pro?help=1…
MaSo 24.02.2020 14:06
MaSo
Díky za info. Platit za to nebudu, šlo o hobby záležitost; vyřeším si to jiným způsobem.
Pavel 24.02.2020 18:31
Pavel
Platit nemusis, ten proxy script muzes mit na jakemkoliv freehostinu s PHP... poslední
MaSo 24.02.2020 19:32
MaSo

V pastebinu máš text, v tom druhom odkaze JSON... resp.data v Axiosu standardne odkazuje na objekt, což v tvojom textovom súbore neexistuje.

Ďalšia vec sú hlavičky, snaž sa používať len tie čo potrebuješ...

To neznám... hm... ja už som Vue prestal riešiť skôr než začal (momentálne som sa zamiloval do Svelte/Sapper, což je 5x lepší Angular)... btw, tie vue-resources používa axios, takže je to jedno. Popravdebod kedy daly do JS fetch() tak je to najlepší spôsob ako získať dáta..

inak síce to neviem, ale nezdá sa mi že i to this. by malo byť v this.$http.get() když tam máš promise, a neviem prečo je tam option get když get už voláš nad $http

Chyba asi nebude v kódu.
Když použiju jQuery k jednoduchému


    $.ajax({
        url: 'http://pastebin.com/raw/5kG3bsEy', success: function(data){
            alert("úspěch");
        }
        , error: function(data){
            alert("error");
        }
    })

dostanu sice error, ale v Nástrojích pro vývojáře->Síť->Odpověď tu plaintext odpověď vidím .

Až teď mne napadlo podívat se do konzole a vidím vysvětlení:

Cross-Origin požadavek byl zablokován: Same Origin zásada nepovoluje načtení vzdáleného zdroje na https://pastebin.com/raw/5kG3bsEy. (Důvod: chybí hlavička CORS 'Access-Control-Allow-Origin').

Takže Javascriptem přes prohlížeč odpověď nedostaneš (leda by sis něco vypnul -ale to nevím) . Ta hlavička musí být v odpovědi.
Chyba není v knihovně ani v kódu.
Musíš použít PHP či jiný serverový jazyk.

Ta hlavička musí být v odpovědi, jak jsem psal - takže by ji tam musel přidat tvůrce pastebin.com .
On ten server i odpoví, prohlížeč odpověď dostane, ale zablokuje ji.
Možná bude skript fungovat na nějaké staré verzi prohlížeče na starém PC s XP, což je slabá útěcha.

Ano - jinak si hlášení neumím vysvětlit.
Nejenom Chrome. Psal jsem hlášení Firefox.
V Chrome vypadá hlášení ještě jasněji takto:

Access to XMLHttpRequest at 'https://pastebin.com/raw/5kG3bsEy' from origin 'http://www.bystricky.b3.cz' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.

A v Network->XHR->Response vidím Fail to load response data.

Kdežto Firefox požadovanou odpověď v Síť->Odpověď aspoň takto zobrazí, jak jsem psal výše.

Zpět do poradny Odpovědět na původní otázku Nahoru