正在设置URL中的请求标头
Setting request header, in a URL?
我们有一个主要用于通过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中设置反向代理非常简单。
相关文章:
- 哪个 JavaScript 库在请求对象上设置 _parsedUrl 属性
- 如何设置$.ajax请求的超时,并在超时时间过长时进行重做
- 在不发出请求的情况下设置img src
- 导轨 4.宝石will_paginate.更改在 ajax 请求上设置的分页链接
- 在express.js中为每个请求设置全局res.local变量
- Ajax请求返回模块设置数据
- 有没有办法为节点js-https请求设置源端口
- 在 Chrome 扩展程序中为 HTTP 请求设置用户代理
- 使用 Fetch GET 请求设置查询字符串
- 为从
标记发出的请求设置自定义标头
- 如何为JQuery$.ajax同步请求设置超时并执行某些操作
- 在CasperJS中为请求设置cookie
- 如何根据Node.js中的post参数之一为所有请求设置时区
- 避免将ajax请求设置为同步的解决方案
- XMLHttpRequest为每个请求设置RequestHeader
- 如何使用AJAX请求设置cookie值
- 为express app中的JSON请求设置正确的内容类型
- 有没有办法为一个请求设置一个cookie ?
- 如何为每个服务器请求设置uid
- 我可以为所有 AJAX 请求设置全局标头吗?