javascript – 如何在RESTful系统中通过HTTP GET请求传递授权数据?

这可能是最基本的问题,出于某种原因,但我有点傻眼.我正在设计一个有多个页面的宁静服务.默认情况下单击链接会触发HTTP GET

现在如何使用get请求发送授权数据?它应该是网址的一部分吗?我将被迫使用加密的查询参数创建一个丑陋的URL.有什么方法可以避免这种情况吗?

javascript / jquery中是否存在可以直接发送此数据的内容,可以这么说?

JQuery中,$.ajax方法将用户名,密码作为参数,以便授权数据可以与ajax调用一起发送.任何相当于非ajax调用的东西,或者我只留下了URL吗?

这种方法的原因:

>我希望用户能够单击“后退”按钮并返回上一页.如果我使用授权执行$.get,并使用$(‘html’)跟随它.替换(结果)它会禁用后退按钮,对吗? (即没有显示任何内容)

这可能应该是一个REST 101但由于某种原因它让我走投无路

(仅供参考:技术:Jquery / javascript / Restlet / Freemarker)

(PS:饼干作为最后的手段.或者它们是最好的方式?:)

最佳答案 使用GET请求,您只能使用请求标头和请求的查询字符串/网址.您可以使用
HMAC方法或
OAUTH,其中每个请求都是“已签名”.如果你正在做这个纯粹的客户端,那么共享秘密的问题就不再是秘密了.

当然,听起来你已经使用用户名和密码发出了POST请求(我强烈反对,BTW)

如果您想要实施HMAC的示例,我相信亚马逊确实(或确实)使用HMAC与S3进行交互,因此有很多示例代码.

最终,如果没有泄露某些“秘密”信息(例如密码或私钥/令牌),那么让Web客户端进行无状态身份验证是非常困难的.您可以向用户发出临时令牌,然后通过验证请求标头(IP地址等)在令牌的生命周期内是否一致来备份.如果您向客户披露临时令牌,您可能希望您的身份验证机制也包含每个请求的唯一nonce.

如果您希望Web客户端执行请求,那么纯粹无状态的RESTful身份验证是非常重要的,因此我不会将其称为REST 101 🙂

点赞