我在处理请求时需要访问Date:
标头,但这似乎被框架“吞噬”了;任何其他标题(甚至组成FooBar
个)出现,我可以得到它们,但这给了我None
(我正在使用Postman发送一个简单的GET请求 - 其他一切正常工作) :
println("Date: " + request.headers.get("Date").getOrElse("no date!"))
无论我如何尝试发送合理的东西,都会返回"no date!"
。
我想知道在request
对象到达我的Action之前是否会处理它。
我需要发送的实际字符串值,因为这应该是请求签名的一部分 - 因此表示相同值的等效Date
对象不会有太大用处(因为它需要是哈希的一部分) ,以避免重播攻击)。
正如测试一样,我将Date
标题替换为Date-Auth
标题,这个显示得很好:
ArrayBuffer((Date-Auth, ArrayBuffer(Wed, 15 Nov 2014 06:25:24 GMT))
任何想法或建议都非常感谢!
答案 0 :(得分:0)
您确定请求中有日期标题(使用firebug或wireshark等工具进行测试)吗? 浏览器不需要发送Date标头。
来自日期部分(14.18)的客户端应该只在包含实体主体的消息中发送Date头字段,就像PUT和POST请求一样,即使这样,它也是可选的。没有时钟的客户端不得在请求中发送Date头字段。
答案 1 :(得分:0)
我的立场得到了纠正 - 事实证明Chrome阻止了一大堆标题: http://www.getpostman.com/docs/requests
我写了一个Python Flask测试服务器,事实上,Date
标题不存在。
该页面也有一个修复,适用于Postman版本0.10.4.3和拦截器(1)。
抱歉浪费每个人的时间!
1顺便说一下,IMO Postman是最好的REST客户端,除了令人难以置信的功能外,现在还有一些很棒的外观。如果您正在使用REST API,我强烈推荐它。