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
Http 如何对非';t邮政?_Http_Rest_Authentication - Fatal编程技术网

Http 如何对非';t邮政?

Http 如何对非';t邮政?,http,rest,authentication,Http,Rest,Authentication,我正在创建一个应用程序,但从概念上讲,我不理解如何对未POST的http请求进行身份验证 例如,如果我收到GET请求,我应该返回一个对象列表,但是如果请求来自在我的站点上注册的人,我只想用该列表进行响应。使用POST,我将获得用户名并通过请求,但是get、DELETE和PUT呢 我在客户端使用Django服务器端和Java(Android)。我可能会使用,但我仍然需要验证 谢谢 当用户首次登录时发出POST请求,并在服务器上为该用户生成会话代码并将其发送到浏览器。现在,您可以在每次查询时将该会话

我正在创建一个应用程序,但从概念上讲,我不理解如何对未POST的http请求进行身份验证

例如,如果我收到GET请求,我应该返回一个对象列表,但是如果请求来自在我的站点上注册的人,我只想用该列表进行响应。使用POST,我将获得用户名并通过请求,但是get、DELETE和PUT呢

我在客户端使用Django服务器端和Java(Android)。我可能会使用,但我仍然需要验证


谢谢

当用户首次登录时发出POST请求,并在服务器上为该用户生成会话代码并将其发送到浏览器。现在,您可以在每次查询时将该会话代码放入GET查询url中,从浏览器发送该会话代码,从而可以在服务器上对用户进行身份验证。

POST
仅当您的服务器通过
应用程序/x-www-Form-urlencoded
多部分/表单数据编码的HTTP使用基于表单的身份验证时才需要请求,而不是通过HTTP
Authorization
头使用基于HTTP的身份验证
GET
请求可以使用基于HTTP的身份验证。

API调用的身份验证与您使用的HTTP方法无关

以这种方式考虑API的功能工作流:

  • 在发送常规API调用之前,先发送登录/生成API登录密钥的调用
  • 收到API调用后,立即运行身份验证检查函数以验证是否允许他们使用该调用
  • 如果已验证,请继续。如果未经验证,则会出现一些错误代码和消息
  • 如果继续,执行正常功能并完成

  • 授权由(恰当命名的)HTTP授权头处理

    授权标头包含凭证/令牌/密码等,无论如何获得,服务器都可以使用这些凭证/令牌/密码等来满足其身份验证和授权要求

    授权头可以与任何HTTP请求一起发送


    请随意查找HTTP BASIC或HTTP DIGEST身份验证,作为如何使用授权头的示例。还要考虑一下Amazon WebServices如何为更复杂的示例使用授权标头。

    或使用Cookie。但是,无论哪种方式,会话代码都可以被任何可以查看HTTP数据的网络嗅探器公开访问,因此请确保对发送会话代码的任何URL使用HTTPS。但即使如此,您仍然需要注意通过HTTPS感知代理/调试器(如Fiddler)进行的MITM攻击。谢谢您的回答。我熟悉Django的登录和会话功能,但在我的应用程序中,客户端不是web浏览器;这是安卓设备上的自定义应用程序。谢谢你,威尔。我读了一些书,发现这些概念是由tastype框架封装的。