如果不需要,我应该允许查询参数和单独的数据吗?
Should I allow query parameters and seperate data if not needed?
我正在思考如何在 node js 中设计我的服务器。我有一些关于允许或不允许客户端使用查询参数 my.site.com?data=some data by the client
或在使用 POST 方法 {data:'some data by the client'}
时通过正文向服务器发送数据的想法。
我在质疑:
1) 是否有适当的方法来通过某些约束来设计我的服务器?
我正在考虑数据在不需要的情况下进入服务器,那么为什么接受这是一个好习惯?
2) 如果我不允许客户端在不需要时发送查询或主体数据,我应该 return(404 或 400)什么 HTTP 状态?
示例
我有一个 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
我应该为 BAD REQUEST 发送 400 HTTP 状态或为 NOT FOUND 发送 404 或响应 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
returns 与 https://www.google.com/#q=ant
完全相同,因为 coolness
不是 url 使用的参数关键字 Google.
额外的 POST 参数也是如此,但如果您有表单或网站,您可能应该确保用户只发送任何必要的数据。
我正在思考如何在 node js 中设计我的服务器。我有一些关于允许或不允许客户端使用查询参数 my.site.com?data=some data by the client
或在使用 POST 方法 {data:'some data by the client'}
时通过正文向服务器发送数据的想法。
我在质疑:
1) 是否有适当的方法来通过某些约束来设计我的服务器? 我正在考虑数据在不需要的情况下进入服务器,那么为什么接受这是一个好习惯?
2) 如果我不允许客户端在不需要时发送查询或主体数据,我应该 return(404 或 400)什么 HTTP 状态?
示例
我有一个 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
我应该为 BAD REQUEST 发送 400 HTTP 状态或为 NOT FOUND 发送 404 或响应 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
returns 与 https://www.google.com/#q=ant
完全相同,因为 coolness
不是 url 使用的参数关键字 Google.
额外的 POST 参数也是如此,但如果您有表单或网站,您可能应该确保用户只发送任何必要的数据。