13
如這裏指出: http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html絕對URI支持2.1
要允許過渡到absoluteURIs在HTTP的未來版本中的所有請求,所有的HTTP/1.1服務器必須接受請求的絕對URI形式,甚至儘管HTTP/1.1客戶端只會在代理請求中生成它們。
我有客戶端發送POST請求到我的play-2.1.1服務器。他這樣發送:
POST http://172.16.1.227:9000/A8%3aF9%3a4B%3a20%3a89%3a40/1089820966/ HTTP/1.1
Content-Length: 473
Content-Type: application/json
Date: Thu, 25 Apr 2013 15:44:43 GMT
Host: 172.16.1.227:9000
User-Agent: my-client
...some data...
所有請求都會被拒絕,並顯示「Action not found」錯誤。這是我送使用curl非常相同的要求僅僅是罰款和他們之間的唯一區別是捲曲相對URI發送:
POST /A8%3aF9%3a4B%3a20%3a89%3a40/1089820966/ HTTP/1.1
Accept: */*
Content-Length: 593
Content-Type: application/json
Host: 172.16.1.227:9000
User-Agent: curl/7.30.0
我創建了Global.scala以下簡單的解決方法:
override def onRouteRequest(request: RequestHeader): Option[Handler] = {
if (request.path.startsWith("http://")) {
super.onRouteRequest(request.copy(
path = request.path.replace("http://"+request.host, "")
))
} else super.onRouteRequest(request)
}
通過此解決方法,來自我的客戶端的所有請求都得到正確處理。
那麼,有沒有更簡單的方法來做到這一點在Play框架或多數民衆贊成的唯一途徑?
你應該張貼播放郵件鏈接就這個問題https://groups.google.com/forum/?fromgroups=#!forum/play-framework – 2013-04-25 15:15:44