2016-08-24 73 views
0

我开发了一个使用oauth2认证的JavaScript应用程序。现在我想要加载/显示来自服务器的图像,这是身份验证机制的后面。因此,我向其余服务器发送一个xmlHttp请求,并获取图像的URI作为响应。在oauth2认证背后加载图像

后,要求我尝试将URI追加到图像的src和应用程序与401

回应我怎么能告诉浏览器重用我的身份验证这一形象呢?

这是获取URI的xmlHttp请求的一部分。

var xhr = new XMLHttpRequest(); 
xhr.open("GET", url, true); 

xhr.setRequestHeader('Content-Type', 'application/json; charset=UTF-8'); 
xhr.setRequestHeader('Authorization','bearer '+token); 
xhr.send(null); 

xhr.onreadystatechange = function() { 
    console.log(xhr); 
    if (xhr.readyState == 4 && xhr.status == 200) { 
     var img = document.createElement('img'); 
     img.src = xhr.responseURL; 
     document.body.appendChild(img); 
    } 
} 

我忘了什么吗?

回答

0

图像是一个静态文件,我怀疑当你通过一个简单的URL请求时,你将能够获得OAuth2保护。虽然您可以在您的URL中添加OAuth2信息,但这可能不是一件好事,因为它会向客户端公开所有应该是私密和安全的数据。

也许你可以考虑从正常的受保护的端点提供图像作为byte []或Base64字符串,如果你真的需要保护图像本身,你可以在客户端渲染它。

因此,有一个受保护的端点服务于图像本身的内容。当然,如果你真的需要这个图像是私密和安全的,你只能这样做。如果你不这样做,就让它公开,并从一个单独的CDN提供服务。它并不需要落后于OAuth2系统。

+0

谢谢迪尔的答案。但这是关键。文件(图片)非常明智,不应该公开。 – Draftsman