如何在不删除cookie的情况下传递http错误400

时间:2015-07-01 05:27:58

标签: javascript html angularjs cookies

我的页面上有一些cookie,我需要保存它并通过页面刷新加载。保存工作正常,但是当我尝试刷新时。我得到" HTTP错误400.请求标头的大小太长",我在cookie中有7-8个cookie文件,它们的摘要大小约为~18kb。 我需要在cookie中保存一个太大的对象,然后将其拆分为数组。然后我把它写入cookieStore(它工作正确)

$scope.cookieDataSavePrepare = function(data) {
            var answerArray = JSON.stringify(data).match(/(.|[\r\n]){1,2048}/g);
            for (var i = 0; i < answerArray.length; i++) {
                $cookieStore.put('dataPart' + i, answerArray[i]);
            }
            $cookieStore.put('dataPartsNumber', answerArray.length);
        };
        $scope.cookieDataLoadPrepare = function() {
            var dataLoad = [];
            for (var i = 0; i < $cookieStore.get('dataPartsNumber'); i++) {
                var file = 'dataPart' + i;
                dataLoad.push($cookieStore.get(file));
            };
            return dataLoad.join('');
        };
        $scope.checkData=function() {
            $window.localStorage.setItem('checkData', $scope.cookieDataLoadPrepare());
        }

        $scope.saveTestsToCookieStore = function () {
            $scope.cookieDataSavePrepare($scope.data);
            $cookieStore.put('answeredQuestions',JSON.stringify($scope.answeredTests));
            $cookieStore.put('questionStopped',$scope.currentQN);
        }

我该如何管理?

1 个答案:

答案 0 :(得分:0)

使用localStorag。或pouchDB。 因此50 cookies per domain, and 4093 bytes per domain.

为什么?

最大网址长度为de facto limit of 2000 characters
但是你的数据是18kb是18000字节,超过4093字节
1个字符= 2个字节,因此18000/2 = 9000个字符超过最大网址长度