我正在为支持使用类似 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/