gpt4 book ai didi

javascript - Safari 中 Express 服务器响应数据中的 HTTP header

转载 作者:行者123 更新时间:2023-12-03 08:01:02 24 4
gpt4 key购买 nike

我的 Angular 应用程序正在从 ui-router 解析调用我的 API:

...
$stateProvider
.state('gallery',{
abstract: true,
templateUrl: 'components/gallery/gallery.html'
})
.state('gallery.views', {
url: "/{gallery:shades-of-gray|color}",
views: {
'left@gallery': {
templateUrl: 'components/gallery/partials/gallery-slider.html',
controller: 'SliderController'
},
'right@gallery': {
templateUrl: 'components/gallery/partials/gallery-img.html',
controller: 'GalleryImgController'
}
},
resolve: {
apiFactory: 'apiFactory',
drawings: function(apiFactory, $stateParams){
var param = $stateParams.gallery === 'color' ? 'color' : 'bw';
return apiFactory.getImageUrls(param);
}
}
});
...

我的 ApiFactory 只是进行 API 调用并解决 promise :

apiFactory.getImageUrls = function(gallery){
if (gallery === undefined)
var gallery = 'all';

return $http({
method: 'GET',
url: API_URL + '/drawings/' + gallery,
}).then(function(response){
return response.data.gallery;
});
};

我的两个 Controller 使用我的解析注入(inject)的数据:

.controller('SliderController', function($scope, drawings){
$scope.drawings = drawings;
...
}
controller('GalleryImgController', function($scope, drawings){
$scope.currentDrawing = drawings[0];
...
}

在 Safari 中,我等待 120 秒来解决 $http promise ,此时我会看到带有正确状态代码、 header 等的响应。但是(与Chrome 中的 Firefox),response.data 是包含 HTTP header 的字符串:

enter image description here

我无法可靠地解析它(因为我将有一个带有一些响应的 Authorization header )。是什么赋予了?为什么 Safari 上会出现此问题?我该怎么办?

如果有帮助,这里是响应请求的 Express 代码:

...
getDrawingSet(gallery, (err, drawings) => {
if (err)
return next(err);
let ret = {};
ret["gallery"] = drawings;
res.status(httpStatus[200]).json(ret);
});
...

其中 drawings 只是一个 JSON 对象数组。谢谢。

最佳答案

In Safari, I wait 120 seconds for the $http promise to resolve, at which point I see my response with proper status code, headers etc. However (unlike Firefox in Chrome), response.data is a string containing the HTTP headers:

HTTP/1.1 OK unknown

-> 这不是有效的 HTTP response header .

6.1 Status-Line

The first line of a Response message is the Status-Line, consisting of the protocol version followed by a numeric status code and its associated textual phrase, with each element separated by SP characters. No CR or LF is allowed except in the final CRLF sequence.

   Status-Line = HTTP-Version SP Status-Code SP Reason-Phrase CRLF

应该是:

HTTP/1.1 200 OK

也许 Safari 不接受此作为 header 并将 header 数据推送到响应?或者您在此之前收到其他 header 吗?

关于javascript - Safari 中 Express 服务器响应数据中的 HTTP header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34572033/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com