HTTP POST后位置标头错误?

时间:2014-04-19 16:44:38

标签: http post curl resteasy jersey-2.0

如果我做了一件非常错误的事,请原谅我,我马上就会纠正。)

我正在创建一个REST服务,我需要创建资源的位置,用于测试目的和进一步开发。

到目前为止,我已经从rfc 2616了解到,我在HTTP POST之后得到的位置标题应该给我链接到我创建的资源。

  

14.30位置

     

Location response-header字段用于重定向收件人      到Request-URI以外的位置完成      请求或识别新资源。 201(创建)      响应,位置是创建的新资源的位置      根据要求。对于3xx响应,位置应该指示      服务器自动重定向到资源的首选URI。该      字段值由单个绝对URI组成。

  Location       = "Location" ":" absoluteURI
     

一个例子是:

  Location: http://www.w3.org/pub/WWW/People.html
     

link to rfc 2616

然而,当我在POST时创建一个新资源(例如使用curl,但我尝试了不同的客户端):

curl -X POST -H "Content-Type: application/xml" -d "<?xml version=\"1.0\" encoding=\"UTF-8\"?><participant><first-name>Severinus</first-name><email>severinus@gmail.com</email></participant>" -v http://localhost:8080/VCTAserverFirstTest/services/participants

这是我回头的标题:

  

上传已完全发送:133个字节中的133个   HTTP / 1.1 201已创建   服务器Apache-Coyote / 1.1未列入黑名单   服务器:Apache-Coyote / 1.1   地点:http://localhost:8080/participants/1   内容长度:0   日期:星期六,2014年4月19日16:07:31 GMT

     

连接#0以托管localhost保持原样

此处位置为http://localhost:8080/participants/1,但资源实际上是在http://localhost:8080/VCTAserverFirstTest/services/participants/1

上访问的

这不是我的预期。你需要服务器端代码还是有明显的答案?

由于 拉斯

编辑:对其他人来说不是一个好的答案,但它是通过使用resteasy框架解决的。

0 个答案:

没有答案