zoukankan      html  css  js  c++  java
  • QNetworkRequest加Authorization头,适应Rest风格的API

      Rest是无状态的。Rest的请求之间不应该有依赖,在调用一个请求前,不需要一定要去提前调用另外一个请求。Rest里面不应该有 session,特别是Rest请求不应该保存信息在sesssion里,以便在后面的调用中使用。甚至包括安全验证,客户端不应该需要提前登录,然后把 权限信息保存在session里,后面的请求用同一个session来调用。

    实现无状态的方法就是,把所有信息都包含在当前的请求中,包括验证信息。HTTP是无状态的,HTTP里有一个Authorization 头,HTTP的要求是在每次请求的时候都把验证信息放在里面,服务器每次处理请求前都去验证这个信息。为了安全,我们可以提供一个生成token的 Rest API,客户端调用这个API生成token(可以附上用户名/密码来生成token)。在后面的所有请求中都把这个token放在 Authentication头中。

      

    如下代码就是实现QNetworkRequest加Authorization头

       QString _url;//url

       QString _token;//token

     //

        QNetworkRequest mreq;
        QNetworkAccessManager *tnam = new QNetworkAccessManager();

        QEventLoop loop;
        QObject::connect(tnam, SIGNAL(finished(QNetworkReply *)), &loop, SLOT(quit()));
        mreq.setUrl(QUrl(_url));
        mreq.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");
        //
        QString token_headerData = "Token  " + _token;
        mreq.setRawHeader("Authorization", token_headerData.toLocal8Bit());
        //
        QNetworkReply* reply=tnam->get(mreq);
        loop.exec();
        QByteArray data=reply->readAll();

     ...

  • 相关阅读:
    网站添加背景音乐
    解决项目上的红色感叹号
    1.12那些年你不知道的爬虫面试题
    1.11you-get 视频爬取
    1.10pytesseract
    1.9Pyppeteer
    1.8request-html
    1.7XPath
    1.6Selenium XPath
    1.5cookies
  • 原文地址:https://www.cnblogs.com/falqs/p/3795444.html
Copyright © 2011-2022 走看看