2017-12-25 9 views
0

Ich bin nicht in der Lage herauszufinden, warum XMLHttpRequest funktioniert und die Verwendung der Abruf oder Axiom funktioniert nicht. Der Endpunkt ist konstant. Hier ist der Code zu vergleichen ... XMLHttpRequest tatsächlich den Text zurückgibt, holen etwasFetch vs. XMLHttpRequest Zuverlässigkeit

var r = new XMLHttpRequest() 
    r.open('GET', 'http://localhost:1337/ticks', true) 
    r.onreadystatechange = function() { 
     if (r.readyState !== 4 || r.status !== 200) { 
      return 
     } 
    } 
    r.send() 

    fetch('http://localhost:1337/ticks', { 
      method: 'GET', 
      mode: 'no-cors' 
      }).then(function (response) { 
       return response.text() 
      }).then(function (text) { 
       console.log(text) 
    }).catch(function (error) { 
    }) 
+0

Dieser Code ist kaputt. Haben Sie "console.log (response)" in Ihrem Abruf-Callback versucht? –

+0

sicher, ich habe Haltepunkte und die response.ok in fetch ist falsch, so schlägt der Aufruf, aber im gleichen Lauf, die xmlhttprequest arbeitet juts fein –

+0

Code ist nicht kaputt;) –

Antwort

0

Entfernen der Modus nicht zurück: ‚Nein-cors‘ tatsächlich bringt den Körper der Antwort auf das Leben. Nur für den Fall, dass jemand das gleiche Problem hat ... Also gibt es immer noch eine Frage, warum fetch funktioniert so, weil die No-Cors ist ziemlich nutzlos, wenn Sie keine Antwort Körper damit bekommen.

1

Tun Sie dies nicht tun:

mode: 'no-cors' 

Es sagt holen, dass Sie die Anfrage machen wollen (die Server etwas zu sagen), aber nicht wollen, um die Antwort lesen (was könnte durch die gleiche Ursprungsrichtlinie verboten werden). Mit dieser Einstellung können Sie das tun, ohne den Fehler zu bekommen, den Sie normalerweise bekommen würden. Da Sie angegeben haben, dass Sie die Antwort nicht lesen möchten, versucht fetch nicht, Ihnen die Antwort zur Verfügung zu stellen.

Verwandte Themen