Php 在REST应用程序删除方法中实现nonce

Php 在REST应用程序删除方法中实现nonce,php,rest,nonce,Php,Rest,Nonce,使用方法POST GET和PUT,我可以将nonce值与其余的客户端请求数据一起发送到服务器,但DELETE方法它不应该携带任何参数,只携带资源的名称 我正在考虑使用If匹配标题 是这样吗 (我知道nonce应该是某些身份验证方案的一部分,如OAuth或HTTP摘要访问身份验证,但现在我不打算完全休息,而是更喜欢使用会话身份验证。也许我做得完全错误,应该重新考虑这一点?身份验证数据的正确(也是唯一)位置,例如自定义nonce值,在请求头中。 您不能将其作为URL的一部分发送(包括查询参数),因为

使用方法POST GET和PUT,我可以将nonce值与其余的客户端请求数据一起发送到服务器,但DELETE方法它不应该携带任何参数,只携带资源的名称

我正在考虑使用If匹配标题

是这样吗

(我知道nonce应该是某些身份验证方案的一部分,如OAuth或HTTP摘要访问身份验证,但现在我不打算完全休息,而是更喜欢使用会话身份验证。也许我做得完全错误,应该重新考虑这一点?

身份验证数据的正确(也是唯一)位置,例如自定义nonce值,在请求头中。

  • 您不能将其作为URL的一部分发送(包括查询参数),因为这将改变您试图删除的资源。查询参数是资源标识符的一部分,任何告诉您其他信息的人都在撒谎
  • 无法在正文中发送,因为delete方法没有请求正文

  • 您使用nonce的目的是什么?将其作为get参数或标头发送,只要它到达目的地就无所谓了。请注意,某些代理将删除您的自定义标题。另外,If-Match头还有其他用法,不适用于您的情况。我使用nonce来避免多次处理同一请求。那么您就错了。删除操作应该是幂等的-即多次处理它们会使系统保持与只调用一次相同的状态。我就是这样处理删除的,所以我想使用nonce实际上有点多余,不过我想知道在处理请求之前是否已经收到请求并抛出一个“重复请求”而不是“未找到资源”(它们可能都是错误400,不会有太大区别,或者400对404,但仍然…。这样可以吗?(“第一次在这里休息…)但是代理后面的客户端呢?标头是否会用作自定义nonce(即,如果匹配)通过通道到达我的服务器?我应该使用或制作自己的特定标准头吗?我最终定义了一个定制的“X-Myapp-Nonce”“头。我尝试了几个代理,一切都很顺利,所以我想我会坚持下去。@elcodedocle代理不应该修改他们一无所知的自定义标题。如果他们这样做,这将破坏互联网的大部分功能(例如,从HTTP 1.0升级到HTTP 1.1是不可能的)。