Javascript 在URL中设置请求头?

Javascript 在URL中设置请求头?,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我们有一个Web服务,主要是通过jquery的$.ajax()从javascript调用。当我们从javascript调用方法时,我们在请求头中设置了一个安全令牌。如果它不在那里,或者没有验证,我们将返回一个未经授权的错误 这一切都很好 但现在我们面临着返回图像文件的问题。因此,我们将在DOM中嵌入一个图像标记,而不是javascript调用$.ajax() <img src='http://mywebservice/imagescontroller/getAnImage?imageid=

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

这一切都很好

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

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

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

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


想法?

简易修复:使用会话cookie。那是一块没有有效期的饼干。它将自动传输每个请求,并在用户关闭浏览器或您通过javascript删除cookie后立即消失

您只需将您的令牌存储在那里,并将其免费发送到您的服务器代码

这里有一些演示资料:

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

请看这里:


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

您可以使用AJAX获取图像数据,然后在
image.src
中放置
data:base64,
URL。这是一个有趣的想法。Cookie在浏览器和服务页面的服务器之间来回传递。我们的web服务位于一个单独的站点上。您知道您将遇到AJAX的同源策略吗?也就是说,除非你用CORS来修复它。如果你必须使用CORS,你也可以得到cookies:或者你可以用老式的方式,通过反向代理将另一个域隐藏在主域的某个路径下。假设'domain.com/services/*'反向代理为'otherdomain.com/bla'。这样既不会出现SOP,也不会出现Cookie问题。