REST API 请求头重的 Date参数问题

在Chrome中使用REST API 发送请求时,在请求的HTTP Header中添加Date参数,Chrome会提示:Refused to set unsafe header "Date" ,因为Chrome严格按照W3C的要求执行,Date为不安全字符(详情查看http://www.w3.org/TR/XMLHttpRequest/#the-setrequestheader-method),又拍云服务器返回 {"msg":"need date header","code":40100001,"id":"9b5baaf8adf64e681ef40f0945c22c81"},需要Date参数,这样如何解决??

阅读 7.4k
2 个回答

这个问题目前几乎是无解的,在个别其他要求传递 Date 的验证协议中,浏览器也无法正常完成授权,我之前见过一个项目为了兼容浏览器请求方式,将 header 中的 Date 改为了 X-Date,我在开发的过程中也遇到了这个问题,我已经给 UPYUN 发了 Feedback,建议他们也做类似的兼容。


Update:

我使用 Chrome Extension 中的 webRequestBlocking 劫持了发送到 UPYUN API 的所有请求,然后强行添加了 Date header,并且这样做是有效的。不过还是有点搞不懂,为什么 Extension 里直接设置 header 就不行,只能用这种劫持的方式更改。

有关 webRequestBlocking 的内容可以参见:https://developer.chrome.com/extensions/webRequest

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进