这可能是最基本的问题,出于某种原因,但我有点傻眼。我正在设计一个有多个页面的宁静服务。默认情况下单击链接会触发HTTP GET
现在 如何使用get请求发送授权数据?它应该是网址的一部分吗?我将被迫使用加密的查询参数创建一个丑陋的URL。有什么方法可以避免这种情况吗?
javascript / jquery中是否存在可以直接发送此数据的内容,可以这么说?
在JQuery中,$.ajax
方法将username, password
作为参数,以便授权数据可以与ajax调用一起发送。任何相当于非ajax调用的东西,或者我只留下了URL吗?
这种方法的原因:
$.get
,并使用$('html').replaceWith(result)
跟随它,则会禁用后退按钮,对吗? (即没有显示任何内容)这应该是一个REST 101,但由于某种原因,它让我走投无路
(仅供参考:技术:Jquery / javascript / Restlet / Freemarker)
(PS:饼干作为最后的手段。或者它们是最好的方式?:)
答案 0 :(得分:2)
使用GET请求,您只能使用请求标头和请求的查询字符串/网址。您可以使用HMAC方法或OAUTH,其中每个请求都是“已签名”。如果你正在做这个纯粹的客户端,那么共享秘密的问题就不再是秘密了。
当然,听起来你已经使用用户名和密码发出了POST请求(我强烈反对,BTW)
如果您想要实施HMAC的示例,我相信亚马逊确实(或确实)使用HMAC与S3进行交互,因此有很多示例代码。
最终,如果没有泄露某些“秘密”信息(例如密码或私钥/令牌),网络客户端就很难进行无状态身份验证。您可以向用户发出临时令牌,然后通过验证请求标头(IP地址等)在令牌的生命周期内是否一致来备份。如果您向客户披露临时令牌,您可能希望您的身份验证机制也包含每个请求的唯一nonce。
如果您希望Web客户端执行请求,那么纯粹的无状态RESTful身份验证是非常重要的,因此我不会将其称为REST 101:)