【发布时间】:2014-02-06 20:37:23
【问题描述】:
在 html 视图中,图像显示如下:
<img ng-src="{{element.image.url}}">
element.image.url 指向如下 URL:/rest_api/img/12345678。
一切正常,显示图像。
现在,我添加身份验证:
在用户通过身份验证之前,每个资源都会以 http 错误 401 响应,图像也是如此。身份验证成功后,将在自定义标头中放置一个令牌,并与每个 $http 请求一起发送,从而允许访问资源:
$http.defaults.headers.common['Authorization'] = token;
这对于使用 $resource 加载的 Json 文件工作正常。但是图片的直接链接在认证后还是401。
如何调用带有自定义标题的图片?
或者关于我应该如何做到这一点的任何建议。
【问题讨论】:
-
你是如何处理认证服务器端的?是 cookie / sessionId 吗?基本认证?据我所知,您不能为非 XHR 请求(脚本、CSS、图像、视频等)附加自定义标头。这些由浏览器处理,您可以在每个请求之前/之后以编程方式控制您的用户代理标头,但与这些请求一起传递的唯一数据包括基本数据和 cookie。
-
服务器端由 Ez publsih rest Api 处理。有两个 cookie:PHPSESSID 和 eZSESSID 以及一个由 angular 处理的令牌 (OAUTH)。你的意思是如果定义了会话cookie,那么图像调用应该可以工作?
-
我不知道 Ez Publish 是如何工作的,但是是的,这个想法是后端将处理身份验证并在验证 sessionId 后返回图像。您的图像与您进行身份验证的任何内容都在同一主机上吗?
-
是的,图片在同一个主机上。
-
您是否有理由首先要保护静态资源?也许只是按原样提供来自后端的图像(不需要身份验证)。
标签: javascript angularjs authentication angular-resource