2017-02-15 1 views
1

Der folgende Code:Text Antwort ist leer bei der Verwendung von Abruf

fetch('http://localhost:8080/root/1487171054127/k_query_bearer_token', { 
     mode: 'no-cors', credentials: 'include' 
    }) 
     .then(function (response) { 
      return response.text(); 
     }) 
     .then(function (text) { 
      console.log('Request successful', text.length); 
     }) 
     .catch(function (error) { 
      log('Request failed', error) 
     }); 

ausgibt:

Request successful 0 

Wenn ich curl verwenden:

curl 'http://localhost:8080/root/1487171054127/k_query_bearer_token' \ 
    -H 'Cookie: JSESSIONID=CviS9IK8pcsqADdP-m0MRXX_AvUqfzjJPwk1Yytf.ee16d0a01ad5' 

ich ein Token in Textform zurück (Länge! = 0).

Und wenn ich Ausgang der Antwort-Header über:

curl 'http://localhost:8080/root/1487171054127/k_query_bearer_token' 
    -H 'Cookie: JSESSIONID=CviS9IK8pcsqADdP-m0MRXX_AvUqfzjJPwk1Yytf.ee16d0a01ad5' 
    --head 

ich:

HTTP/1.1 200 OK 
Connection: keep-alive 
X-Powered-By: Undertow/1 
Server: JBoss-EAP/7 
Content-Type: text/plain 
Content-Length: 1730 
Date: Wed, 15 Feb 2017 16:17:00 GMT 

Warum erhalte ich keinen Text über holen?

+0

Wie lautet Ihre erwartete Antwort? response.text() gibt ein Versprechen zurück, das USVString enthalten wird: https://developer.mozilla.org/en-US/docs/Web/API/Body/text – Rikin

Antwort

2

Entfernen Sie mode: 'no-cors'. Wenn Sie mode: 'no-cors' verwenden, geben Sie explizit an, dass Sie eine “opaque response” möchten.

Ihr Skript kann nicht auf Eigenschaften einer undurchsichtigen Antwort zugreifen, sondern es kann im Wesentlichen nur zwischengespeichert werden. mode: 'no-cors' ist im Grunde nur nützlich beim Zwischenspeichern mit Service Workers.

Wenn der Grund für die Verwendung des Skripts mode: 'no-cors' ist, weil serverübergreifende Anfragen an den Server nicht funktionieren, ist es die richtige Lösung, den serverseitigen Code zu aktualisieren, um den Antwortkopf Access-Control-Allow-Origin und andere CORS-Header zu senden - Wenn Sie Zugriff auf den Server haben, tun Sie dies - oder verwenden Sie einen Reverse-Proxy wie https://cors-anywhere.herokuapp.com/.

+0

Sie sind eine Legende. Ich dachte, dass es wegen des clientseitigen Codes war, da die Serverseite eine Antwort gab. Nein! – Chiel

Verwandte Themen