Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rest 执行删除请求时键入密码_Rest_Http_Backend - Fatal编程技术网

Rest 执行删除请求时键入密码

Rest 执行删除请求时键入密码,rest,http,backend,Rest,Http,Backend,我们希望用户能够从应用程序中删除其帐户 用户需要输入密码并将密码与删除请求一起发送 这样做的最佳方法是什么 我是将密码发送到正文上还是将其作为参数发送?我想说,这并不重要,除非您希望密码包含非ASCII参数——这总是会引起噩梦 HTTP没有规定描述查询字符串的编码,但可以在正文中明确使用unicode编码。但由于可以指定协议,因此可以确定查询字符串包含密码的xxx编码字节字符串 另一个主要区别是,查询字符串的大小受到限制,而正文则没有。但是非常大的密码并不常见,所以它不应该是一个真正的问题 长话

我们希望用户能够从应用程序中删除其帐户

用户需要输入密码并将密码与删除请求一起发送

这样做的最佳方法是什么


我是将密码发送到正文上还是将其作为参数发送?

我想说,这并不重要,除非您希望密码包含非ASCII参数——这总是会引起噩梦

HTTP没有规定描述查询字符串的编码,但可以在正文中明确使用unicode编码。但由于可以指定协议,因此可以确定查询字符串包含密码的xxx编码字节字符串

另一个主要区别是,查询字符串的大小受到限制,而正文则没有。但是非常大的密码并不常见,所以它不应该是一个真正的问题


长话短说:我只认为这是一个品味和设计决策的问题(前提是您明确指定查询字符串编码)。

我想说,这没有多大关系,除非您希望密码包含非ASCII参数——这总是会引起噩梦

HTTP没有规定描述查询字符串的编码,但可以在正文中明确使用unicode编码。但由于可以指定协议,因此可以确定查询字符串包含密码的xxx编码字节字符串

另一个主要区别是,查询字符串的大小受到限制,而正文则没有。但是非常大的密码并不常见,所以它不应该是一个真正的问题


长话短说:我认为这只是一种品味和设计决策(前提是您明确指定查询字符串编码)。

TL;DR-您可能希望使用没有消息正文的删除,并将秘密握手复制到请求头中


我会把密码写在尸体上吗

可能不是这个

删除请求消息中的有效负载没有定义的语义;在删除请求上发送有效负载正文可能会导致某些现有实现拒绝该请求。-

中的一个重要概念是,所有资源都应该以相同的方式理解消息。这给我们的一个特性是能够使用通用组件(浏览器、缓存);一切都“正常工作”,因为消息及其语义已经标准化

如果您想要的是“像DELETE一样,但是有语义上重要的负载”,那么正确的答案应该是创建一个新的方法标记,然后完成方法语义标准化的过程,并推动采用

好消息是:当请求的语义不值得标准化时,HTTP已经有了一个方法令牌可供使用:


还是将其作为参数发送

这也不是。这里至少有两个问题

URI是最重要的标识符,这意味着它们出现在许多上下文(如访问日志和浏览器历史记录)中,在这些上下文中,隐私或敏感信息的暴露将是不幸的

更大的问题是,如果您通过向标识符添加参数来更改标识符,那么就通用组件而言,您引用的是不同的资源

DELETE /foo
DELETE /foo?password
从通用组件的角度来看,这是两种不同的资源,完全没有理由删除一种资源会以任何方式影响另一种资源。所以像这样的事情不“只是工作”


如果您试图让用户重新进行身份验证以执行删除操作,那么您应该了解当前如何对其进行身份验证,以及该机制是否为您提供了使当前凭据无效的方法

另一方面,如果您只是试图收集一个“是的,我真的是认真的”短语,那么该信息应该像任何其他表单数据一样复制到请求正文中(这意味着您需要使用POST,或者定义一个新的方法标记),或者复制到请求中包含的头中

请求头的基本用途是,它们被设计为

这些要求允许增强HTTP的功能,而无需事先更新已部署的中介


与方法令牌一样,如果您想推动采用,则存在一个问题。

TL;DR-您可能希望使用没有消息正文的删除,并将秘密握手复制到请求头中


我会把密码写在尸体上吗

可能不是这个

删除请求消息中的有效负载没有定义的语义;在删除请求上发送有效负载正文可能会导致某些现有实现拒绝该请求。-

中的一个重要概念是,所有资源都应该以相同的方式理解消息。这给我们的一个特性是能够使用通用组件(浏览器、缓存);一切都“正常工作”,因为消息及其语义已经标准化

如果您想要的是“像DELETE一样,但是有语义上重要的负载”,那么正确的答案应该是创建一个新的方法标记,然后完成方法语义标准化的过程,并推动采用

好消息是:当请求的语义不值得标准化时,HTTP已经有了一个方法令牌可供使用:


还是将其作为参数发送

这也不是。这里至少有两个问题

URI是最重要的标识符,这意味着它们出现在许多上下文(如访问日志和浏览器历史记录)中,其中私有或敏感信息的暴露