如果不需要,我应该允许查询参数和分离数据吗?

问题描述:

我对如何在节点js中设计我的服务器有一些想法。我对于是否允许客户端使用查询参数my.site.com?data=some data by the client或通过使用POST方法{data:'some data by the client'}的正文发送数据到服务器有一些想法。 我在质疑:如果不需要,我应该允许查询参数和分离数据吗?

1)有没有适当的方法来设计我的服务器的一些约束? 我在想没有需要的数据到服务器,为什么接受这是一个很好的做法?

2)如果我不应该允许客户端在不需要时发送查询或主体数据我应该返回什么HTTP状态(404或400)?

我有一个GET方法的URI路径和我期望路径独自这样

http://my.site.com/something

或这样

http://my.site.com/something?search=I search for anything

时用户发送给我这个GET URL:

http://my.site.com/something?here=not something that is useful to the server

我应该送了错误请求或404 400 HTTP状态为未找到或用200 OK回应?如果还好,为什么我应该允许其他查询,如果服务器没有使用它们?

同样的问题适用于POST方法,如果我需要例如

{uname:'username',pwd:'password'}我为什么要允许用户向我发送例如

{uname:'username',pwd:'password',some:'other data here'}

如果用户发送额外的url参数,您应该忽略它。这是大多数服务器所做的。例如,Google搜索https://www.google.com/#q=ant&coolness=true返回的结果与https://www.google.com/#q=ant完全相同,因为coolness不是Google使用的url参数关键字。

对于额外的POST参数也是如此,但如果您有表单或网站,则应该确保用户只发送任何必需的数据。