一些背景知识:我们目前正在尝试尝试在几家供应商之间指定一个HTTP API,以便不同的产品可以轻松互操作。我们还没有编写任何“服务器”软件,也没有编写任何客户端,只是列出了API的基础知识,以便每一方都可以开始原型设计,然后我们可以对其进行优化。因此,此API的典型用例将由给定应用程序内的(瘦)HTTP层使用,而不是在浏览器中使用。
如果没有会话状态,通信就没有意义,所以我们正在研究如何track sessions typically。
事实是,我们希望尽可能简化API的实现,尽可能减轻任何使用过的HTTP库的负担。
有人建议基本上通过“网址重写”来管理会话,但更明确一点:
POST .../service/session
{...} 201 Created
和会话网址 .../service/session/{session-uuid}
.../service/session/{session-uuid}/whatever
DELETE .../service/session/{session-uuid}
环顾网络,初步搜索表明这有点不典型。
这是一种有效的方法吗?具体的缺点或优点?
我们确定的专业人士:(请在适当的时候揭穿)
由于提到了PHPSESSID,我偶然发现this other question,其中提到“URL中的会话”方法可能更容易受到session fixation攻击。
但是,请参阅上面的第2个子弹:我们计划实现〜为此会话概念正交指定身份验证/授权,因此传递“会话”URL甚至可能是一个功能,所以我们认为我们将会话显示在URL中会很好。