在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参数,这样如何解决??
这个问题目前几乎是无解的,在个别其他要求传递 Date 的验证协议中,浏览器也无法正常完成授权,我之前见过一个项目为了兼容浏览器请求方式,将 header 中的 Date 改为了 X-Date,我在开发的过程中也遇到了这个问题,我已经给 UPYUN 发了 Feedback,建议他们也做类似的兼容。
Update:
我使用 Chrome Extension 中的 webRequestBlocking 劫持了发送到 UPYUN API 的所有请求,然后强行添加了 Date header,并且这样做是有效的。不过还是有点搞不懂,为什么 Extension 里直接设置 header 就不行,只能用这种劫持的方式更改。
有关 webRequestBlocking 的内容可以参见:https://developer.chrome.com/extensions/webRequest