gpt4 book ai didi

scala - Play Framework 2.1 中的 AbsoluteURI 支持

转载 作者:行者123 更新时间:2023-12-03 23:58:36 27 4
gpt4 key购买 nike

如此处所述:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec5.html

To allow for transition to absoluteURIs in all requests in future versions of HTTP, all HTTP/1.1 servers MUST accept the absoluteURI form in requests, even though HTTP/1.1 clients will only generate them in requests to proxies.



我有客户端将 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...

所有请求都因“找不到操作”错误而被拒绝。我使用 curl 发送的请求非常好,它们之间的唯一区别是 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 Framework 中是否有更直接的方法来做到这一点,或者那是唯一的方法?

最佳答案

感谢 @nraychaudhuri Play 2.2 支持 absoluteURI - 样式的请求 header 。

这是问题和拉取请求:https://github.com/playframework/playframework/pull/1060

关于scala - Play Framework 2.1 中的 AbsoluteURI 支持,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16214432/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com