Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Get запрос сбрасываеться статус ответа (https://javascript.ru/forum/misc/79090-get-zapros-sbrasyvaetsya-status-otveta.html)

pokk 16.12.2019 08:03

Get запрос сбрасываеться статус ответа(решено)
 
Добрый день, давным давно сделал функцию для получения параметров из GET запроса, и она работала все это время, но тут перестали отображаться параметры, начал разбираться нашел, что запрос приходит (во вкладке сеть все ок(статус 200) приходит) а calback не вызывается, добавил:
console.log("http2.readyState=",http2.readyState);
console.log("http2.status=",http2.status);

И результат такой получился:
Код:

http2.readyState= 2
http2.status= 200
http2.readyState= 3
http2.status= 200
http2.readyState= 4
http2.status= 0

Как так получается что после принятия всего пакета (readyState= 4)
статус пакета пакета =0 ? Во вкладке сеть пишется статус 200
Почему статус может сбрасываться ?

Заголовок ответа такой:
Цитата:

HTTP/1.1 200 OK
Content-Type: application/json
Access-Control-Allow-Origin: *
Cache-Control: no-cache
Content-Length: 00000002440
в Content-Length: 00000002440 переднии нули могут мешать ?


var http2 = createRequestObject();

function GetSettingTimeout(link,ModeFuncCall,CallbackTrue,CallbackFalse,CallbackWait) {
        (function _f() {
            if( http2 ) {
				//---------------------------------------------
				var uriEncode = encodeURI(link).replace(/%20/g,'!').replace(/'/g,'~').replace(/%22/g,'"').replace(/%5B/g, '[').replace(/%5D/g, ']');
				////console.log(uriEncode);
				// if(WEBPACK_MODE){
				// }else{
					//uriEncode="http://192.168.0.4/"+uriEncode;
				//}
				XMLHttpRequest_Start=1;
                http2.open('GET', uriEncode, true);
				//---------------------------------------------
				http2.setTimeout(function() {}, 10); =3000;
				clearTimeout(TimerID||0);	//Если запускаеться другая функция то переназначаем для него таймаут
				//---------------------------------------------
                http2.onreadystatechange = function () {
                	console.log("http2.readyState=",http2.readyState);
                	console.log("http2.status=",http2.status);
					if (http2.readyState == 4&&http2.status == 200) {
						if (CallbackTrue && typeof(CallbackTrue) === "function") {
							clearTimeout(TimerID||0);
							CallbackTrue.call(http2.responseText);
							CallbackWait=0;		//Сбросил CallbackWait в ноль что бы при следующем GetSettingTimeout с другими параметрами не запускался предыдуший CallbackWait   
						}
						//CallbackTrue.call(http2.responseText);
						//ConnectSuccessful();
						if(ModeFuncCall==CYCLIC){
							TimerID = setTimeout(_f, 1000);
						}
                    }else{
						if(typeof(CallbackWait) === "function"){
							CallbackWait();
						}
					}
                };
				//---------------------------------------------
				http2.ontimeout = function() {
					//Disconnect();
					TimerID = setTimeout(_f, 1500);
					if (CallbackFalse && typeof(CallbackFalse) === "function") {
						CallbackFalse.call(http2.responseText);
					}
					TimerID = setTimeout(_f, 3000);
				};
				//---------------------------------------------
				http2.abort= function() {
					if(StatusAbort==ClearAbbort){
						//Disconnect();
						StatusAbort=ClearAbbort;
						TimerID = setTimeout(_f, 1000);
					}
				};
				//---------------------------------------------
                http2.send(null);
            }else{
				TimerID = setTimeout(_f, 1000);
            }
        })();
    }


	function createRequestObject()
    {
        try { return new XMLHttpRequest() }
        catch(e)
        {
            try { return new ActiveXObject('Msxml2.XMLHTTP') }
            catch(e)
            {
                try { return new ActiveXObject('Microsoft.XMLHTTP') }
                catch(e) { return null; }
            }
        }
    }

pokk 17.12.2019 08:17

Оказалось что со сервера не правильно выдается размер в шапке
в 10 раз больше чем реальные данные.
Content-Length: 00000002440


Часовой пояс GMT +3, время: 11:26.