http - 网络服务器应该忽略额外的查询参数还是返回错误?

标签 http rest

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

  • “https://www.somewhere.com/fooResource/123”
  • “https://www.somewhere.com/fooResource/456”
  • “https://www.somewhere.com/fooResource?q=title:hi”
  • “https://www.somewhere.com/fooResource?q=title:hello&sort=foo”

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

  • “https://www.somewhere.com/fooResource?q=title:hi&something=foo”

我收到一个对我没有意义的查询参数“something”,我们的搜索引擎将忽略它。我应该

  • 立即返回一个 4xx 状态码
  • 忽略它并返回 200 和结果
  • 要么我是“正确的”取决于我的用例

最佳答案

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

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

如果出于某种原因您预计有人会愚弄您的网站并以某种方式提交“骇人听闻”的请求,您可能希望通过识别非法参数并返回一些错误来将他们拒之门外。 4xx 对于 REST 服务来说是合理的。

关于http - 网络服务器应该忽略额外的查询参数还是返回错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14390242/

相关文章:

android - 通过 Rest Server 使用 Facebook 帐户发布到 Drupal

http - 如何知道内容长度

angular - 如何逃避 Angular HttpParams?

ios - 编写 iOS http Post 类

java - 如何使用 Spring Boot 在后端跟踪文件下载进度?

java - 安装 JAX-RS(REST Web 服务)1.1 时失败。 java.lang.NullPointerException异常

java - Rest ,使用 Get 作为查询字符串发送参数或仅使用 Post 获取信息

c# - 想深入了解Http

http - 使用 Chrome 的 POST 请求中存在额外的 "_"参数

java - 命名空间(和操作)应该以斜杠开头吗?