Web服务器是否应忽略额外的查询参数或返回错误?

时间:2013-01-17 23:49:43

标签: http rest

我实现了RESTful Web服务器的逻辑,该服务器支持使用类似SolR的语法进行搜索。以下是一些常见的有效请求:

  • " HTTPS://www.somewhere.com/fooResource/123"
  • " HTTPS://www.somewhere.com/fooResource/456"
  • " HTTPS:?//www.somewhere.com/fooResource Q =标题:喜"
  • " HTTPS:?//www.somewhere.com/fooResource Q =标题:你好&安培;排序= FOO"

我的问题很通用;如果我收到这样的请求,我该怎么办?

  • " HTTPS:?//www.somewhere.com/fooResource Q =标题:喜&安培;东西= FOO"

我收到了一个查询参数""这对我没有意义,我们的搜索引擎会忽略它。我应该

  • 立即返回4xx状态代码
  • 忽略它并返回200结果
  • 要么我是"对"取决于我的用例

2 个答案:

答案 0 :(得分:1)

许多网页只是忽略了他们不期望的东西。

通常,URL和参数是在浏览器或Web服务客户端上单击某些内容或运行某些代码的结果。这些很少会提出任何意外的事情。

如果您有某种原因希望某人愚弄您的网站并以某种方式提交“hackish”请求,您可能希望通过识别非法参数并返回一些错误来锁定它们。 4xx对于REST服务是合理的。

答案 1 :(得分:0)

阅读HTTP状态定义。我会练习不回信任何不良信息。 400的定义是The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.,在这里似乎是合适的,但是您的用例可能会另外认为。

如果您没有向客户提供任何信息。他们可能永远不会知道出错了。