функция облачного кода отлично работала при синтаксическом анализе, но не в back4app

#javascript #parse-platform #http-headers #parse-cloud-code #back4app

#javascript #синтаксический анализ-платформа #http-заголовки #parse-cloud-code #back4app

Вопрос:

После переноса моего приложения из Parse.com на платформе back4app мы начали сталкиваться с проблемами с функциями облачного кода.

У меня есть функция облачного кода, которая вызывает следующий URL:http://www.pro.co.il/homeler/test.asp?c=6amp;a=51

И ошибка такова: { [Ошибка: ошибка синтаксического анализа] Байтовый анализ: 373, код: ‘HPE_UNEXPECTED_CONTENT_LENGTH’ }

Функция облачного кода:

     Parse.Cloud.define("getFromPro", function (request, response) {
    return Parse.Cloud.httpRequest({
    url: 'http://www.pro.co.il/homeler/test.asp?c='   request.params.classification   'amp;a='   request.params.area,
    method: 'GET',
    headers: {
    'Content-Type': 'application/json;charset=utf-8'
    }
    }).then(function (httpResponse) {
        response.success(httpResponse);
    }, function (httpResponse) {
        response.error("not ok");
    });
});
  

Есть идеи, связана ли проблема с сервером back4app, или я могу исправить это в своей функции облачного кода?

Ответ №1:

проблема в том, что ответ, который вы получаете от pro.co.il имеет два заголовка content-length:

 curl -v http://www.pro.co.il/homeler/test.asp?c=6amp;a=51  
* Trying 195.190.23.112...
* Connected to www.pro.co.il (195.190.23.112) port 80 (#0)
> GET /homeler/test.asp?c=6amp;a=51 HTTP/1.1
> Host: www.pro.co.il
> User-Agent: curl/7.49.1
> Accept: */*
> 
< HTTP/1.1 200 OK
< Cache-Control: private
< Content-Length: 1583
< Content-Type: text/html; Charset=UTF-8
< Expires: Sun, 31 Dec 1989 22:00:00 GMT
< Set-Cookie: ASPSESSIONIDCSCTSQSS=OBFNBKCBBPEDLKCIJNNLBJCD; path=/
< X-Powered-By: ASP.NET
< Accept-Ranges: bytes
< Date: Sat, 22 Oct 2016 15:08:28 GMT
< X-Varnish: 1532078109
< Age: 0
< Via: 1.1 varnish
< Connection: keep-alive
< Content-Length: 1583
  

Когда вы перешли из parse.com для parse-server, библиотеки, используемой для выполнения синтаксического анализа.Cloud.request изменен на https://github.com/request/request которая использует nodes http lib, которая строго относится к заголовкам по соображениям безопасности (хотя, если длины дублирующегося содержимого совпадают, как в этом случае, было бы разумно не допускать ошибок, поскольку это не представляет угрозы безопасности).

Вы можете прочитать о проблеме здесь:https://github.com/nodejs/node/issues/6517

Я просмотрел параметры запроса, чтобы узнать, можете ли вы отключить это, но, похоже, вы не можете.

Возможно ли для вас получить pro.co.il чтобы исправить их сбойный ответ?