Rest是無狀態的。Rest的請求之間不該該有依賴,在調用一個請求前,不須要必定要去提早調用另一個請求。Rest裏面不該該有 session,特別是Rest請求不該該保存信息在sesssion裏,以便在後面的調用中使用。甚至包括安全驗證,客戶端不該該須要提早登陸,而後把 權限信息保存在session裏,後面的請求用同一個session來調用。安全
實現無狀態的方法就是,把全部信息都包含在當前的請求中,包括驗證信息。HTTP是無狀態的,HTTP裏有一個Authorization 頭,HTTP的要求是在每次請求的時候都把驗證信息放在裏面,服務器每次處理請求前都去驗證這個信息。爲了安全,咱們能夠提供一個生成token的 Rest API,客戶端調用這個API生成token(能夠附上用戶名/密碼來生成token)。在後面的全部請求中都把這個token放在 Authentication頭中。服務器
以下代碼就是實現QNetworkRequest加Authorization頭session
QString _url;//urlapp
QString _token;//tokenoop
//ui
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();url
...spa