正在设置URL中的请求标头

Setting request header, in a URL?

本文关键字:请求 设置 URL      更新时间:2023-09-26

我们有一个主要用于通过jquery的$.ajax()从javascript调用的Web服务。当我们从javascript调用方法时,我们在请求头中设置一个安全令牌。如果它不存在,或者没有验证,我们将返回一个未经授权的错误。

这一切都很好。

但现在我们面临着返回图像文件的问题。因此,我们没有让javascript调用$.ajax(),而是在DOM中嵌入一个图像标记:

<img src='http://mywebservice/imagescontroller/getAnImage?imageid=123'/>

当我们这样做时,我们在请求头中没有安全令牌。我能想出两个"简单"的解决办法。1.,我们只允许匿名访问我们的图像URL,或者2.,我们将安全令牌作为URL参数进行传递。

当然,第一选择不是一个好主意。第二个很简单。但在我决定采用这种方法之前,我想知道是否有一种简单的方法可以为这类请求设置请求头,但我缺少这种方法。

想法?

简单修复:使用会话cookie。那是一块没有有效期的饼干。它会随着每个请求自动传输,一旦用户关闭浏览器,或者你通过javascript删除cookie,它就会消失。

您只需将您的代币存储在那里,然后将其免费交付给您的服务器代码。

这里有一些演示内容:如何使用jQuery设置/取消设置cookie?

如果你在另一个域上运行服务,你需要使用CORS来运行AJAX,否则你的AJAX将运行到同源策略中。有了CORS,你甚至可以让饼干发挥作用。

请参阅此处:CORS请求-为什么不发送cookie?

如果你不想使用CORS,你也可以通过反向代理将服务域合并到你自己的域中。这将解决SOP问题,并使cookie的使用成为可能。在Apache中设置反向代理非常简单。