Текстовый ответ пуст при использовании выборки

Следующий код:

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)
        });

выводит:

Request successful 0

Если я использую завиток:

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

Я возвращаю токен в текстовом виде (длина! = 0).

И если я выведу заголовок ответа через:

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

Я получил:

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

Почему я не получаю текст через выборку?


person Baz    schedule 15.02.2017    source источник
comment
Каков ваш ожидаемый ответ? response.text() вернет обещание, которое будет содержать USVString: developer.mozilla.org/en-US/docs/Web/API/Body/text   -  person Rikin    schedule 15.02.2017


Ответы (1)


Удалить mode: 'no-cors'.

Когда вы используете режим no-cors, вы явно указываете, что вам нужен "непрозрачный ответ".

Ваш сценарий не может получить доступ ни к каким свойствам непрозрачного ответа — вместо этого, по сути, все, что вы можете сделать, это кэшировать его. Режим no-cors в основном полезен только при кэшировании с помощью Service Workers.

Если ваш сценарий использует режим no-cors по той причине, что в противном случае запросы к серверу из разных источников не будут работать, правильное решение — либо обновить код на стороне сервера, чтобы отправить заголовок ответа Access-Control-Allow-Origin и другие заголовки CORS, если вы иметь доступ к серверу, сделайте это или используйте прокси, например https://cors-anywhere.herokuapp.com/.

person sideshowbarker    schedule 15.02.2017
comment
Ты легенда. Я думал, что это из-за кода на стороне клиента, так как сторона сервера давала ответ. Нет! - person Chiel; 09.03.2018