远程服务器头不匹配AngularJS报告的$ http.get(...)数据大小

时间:2015-09-29 14:51:26

标签: angularjs facebook

有一个奇怪的问题。我正在使用facebook's / me graph api提供的URL和一个简单的$ http.get(...)调用从facebook API下载用户Pic。这是在AngularJS应用程序(AngularJS的v1.4.4)中的客户端执行

Facebook.api("/v2.3/me",{fields: 'id,name,first_name,picture.width(160).height(160)'},
     function (response) {
                $scope.$apply(function() {
                    console.log(response.picture.data.url);
                    $scope.fbuser.picture = response.picture.data.url;
                    $http.get($scope.fbuser.picture)
                    .success(function (picdata, status, headers, config) {
                            console.log("retrieved "+picdata.length+" bytes");
   ..etc..

$ http.get(...)返回一个比服务器说的短的picdata字符串。为了排除Facebookesque之类的东西,我改变了在我的服务器上使用一个文件...并用相同的图片看到相同的结果。根据我在浏览器中看到的标题,图像的长度应为5886字节...

接受-范围:字节
缓存控制:max-age = 84600,public,no-transform
内容长度:5886
内容类型:图像/ JPEG
日期:2015年9月27日星期日04:06:10 GMT
ETag的: “c01bf-16fe-520b2957e00e9”
到期日:2015年9月28日星期一03:36:10 GMT
最后修改日期:2015年9月27日星期日03:57:47 GMT
服务器:Apache / 2.2.22(Debian)

然而,当我记录picdata.length时,我得到5727字节

如果我遍历picdata字符串,我发现一些 picdata.charCodeAt(i)字符的值为> 255 ...这会让我相信这个字符串不是一个简单的ASCII字符串......但是$ http.get不应该只返回一个字节数组吗?

我知道检索到的URI是正确的 - 如果我在浏览器中使用URI,浏览器可以正常加载图片。

如果我尝试使用从URI获得的数据构建图像(构建blob并将其用作图像),我会得到一个损坏的图像。

我从Facebook 本地文件中看到这一点的事实表明我在这里错过了一些东西....

0 个答案:

没有答案