GoAhead2.5源代码分析之6-访问验证(security.c)
security.c
主要功能是:驗證登陸用戶的信息,會在頁面上顯示對應(yīng)的信息,不成功,顯示錯誤頁面,成功時,會驗證用戶名和密碼。
-----------------------------------------------------------------------------------------------------------------
?
int websSecurityHandler(webs_t wp, char_t *urlPrefix, char_t *webDir, int arg,
????????????????????????????????????????? char_t *url, char_t *path, char_t *query)
功能:驗證用戶的登陸信息,顯示對應(yīng)的頁面
說明:
首先判斷是否支持ssl,如果支持,先獲取該路徑是否是加密處理的,如果所獲得值與flag的不一致,會向瀏覽器報告狀態(tài)碼405(禁用請求中所指定的方法)
然后獲得訪問方法;
如果是調(diào)試,且flag是WEBS_LOCAL_REQUEST,可以順利訪問;
如果訪問方法是AM_NONE,會輸出狀態(tài)碼404,Page Not Found(服務(wù)器找不到請求的網(wǎng)頁)
如果不存在這樣的用戶,輸出401(要求進行身份驗證)
判斷該用戶是否能訪問該路徑,不能則輸出403(服務(wù)器拒絕請求)
獲取用戶密碼,如果不匹配,輸出401(要求進行身份驗證)
獲取摘要認證字符串,如果不匹配,輸出401(要求進行身份驗證)
如果認證方法不為AM_FULL,輸出401(要求進行身份驗證)
401就是在瀏覽器上彈出窗口,要求輸入用戶名、密碼
-----------------------------------------------------------------------------------------------------------------
?
備注:經(jīng)常使用的http狀態(tài)碼
HTTP 狀態(tài)代碼
以下提供了 HTTP 狀態(tài)代碼的完整列表。
1xx(臨時響應(yīng))
用于表示臨時響應(yīng)并需要請求者執(zhí)行操作才能繼續(xù)的狀態(tài)代碼。
| 代碼 | 說明 |
| 100(繼續(xù)) | 請求者應(yīng)當(dāng)繼續(xù)提出請求。服務(wù)器返回此代碼則意味著,服務(wù)器已收到了請求的第一部分,現(xiàn)正在等待接收其余部分。 |
| 101(切換協(xié)議) | 請求者已要求服務(wù)器切換協(xié)議,服務(wù)器已確認并準備進行切換。 |
2xx(成功)
用于表示服務(wù)器已成功處理了請求的狀態(tài)代碼。
| 代碼 | 說明 |
| 200(成功) | 服務(wù)器已成功處理了請求。通常,這表示服務(wù)器提供了請求的網(wǎng)頁。如果您的 robots.txt 文件顯示為此狀態(tài),那么,這表示已成功檢索到該文件。 |
| 201(已創(chuàng)建) | 請求成功且服務(wù)器已創(chuàng)建了新的資源。 |
| 202(已接受) | 服務(wù)器已接受了請求,但尚未對其進行處理。 |
| 203(非授權(quán)信息) | 服務(wù)器已成功處理了請求,但返回了可能來自另一來源的信息。 |
| 204(無內(nèi)容) | 服務(wù)器成功處理了請求,但未返回任何內(nèi)容。 |
| 205(重置內(nèi)容) | 服務(wù)器成功處理了請求,但未返回任何內(nèi)容。與 204 響應(yīng)不同,此響應(yīng)要求請求者重置文檔視圖(例如清除表單內(nèi)容以輸入新內(nèi)容)。 |
| 206(部分內(nèi)容) | 服務(wù)器成功處理了部分 GET 請求。 |
3xx(已重定向)
要完成請求,您需要進一步進行操作。通常,這些狀態(tài)代碼是永遠重定向的。Google 建議您在每次請求時使用的重定向要少于 5 個。您可以使用網(wǎng)站管理員工具來查看 Googlebot 在抓取您已重定向的網(wǎng)頁時是否會遇到問題。診斷下的抓取錯誤頁中列出了 Googlebot 由于重定向錯誤而無法抓取的網(wǎng)址。
| 代碼 | 說明 |
| 300(多種選擇) | 服務(wù)器根據(jù)請求可執(zhí)行多種操作。服務(wù)器可根據(jù)請求者 (User agent) 來選擇一項操作,或提供操作列表供請求者選擇。 |
| 301(永久移動) | 請求的網(wǎng)頁已被永久移動到新位置。服務(wù)器返回此響應(yīng)(作為對 GET 或 HEAD 請求的響應(yīng))時,會自動將請求者轉(zhuǎn)到新位置。您應(yīng)使用此代碼通知 Googlebot 某個網(wǎng)頁或網(wǎng)站已被永久移動到新位置。 |
| 302(臨時移動) | 服務(wù)器目前正從不同位置的網(wǎng)頁響應(yīng)請求,但請求者應(yīng)繼續(xù)使用原有位置來進行以后的請求。此代碼與響應(yīng) GET 和 HEAD 請求的 301 代碼類似,會自動將請求者轉(zhuǎn)到不同的位置。但由于 Googlebot 會繼續(xù)抓取原有位置并將其編入索引,因此您不應(yīng)使用此代碼來通知 Googlebot 某個頁面或網(wǎng)站已被移動。 |
| 303(查看其他位置) | 當(dāng)請求者應(yīng)對不同的位置進行單獨的 GET 請求以檢索響應(yīng)時,服務(wù)器會返回此代碼。對于除 HEAD 請求之外的所有請求,服務(wù)器會自動轉(zhuǎn)到其他位置。 |
| 304(未修改) | 自從上次請求后,請求的網(wǎng)頁未被修改過。服務(wù)器返回此響應(yīng)時,不會返回網(wǎng)頁內(nèi)容。 如果網(wǎng)頁自請求者上次請求后再也沒有更改過,您應(yīng)當(dāng)將服務(wù)器配置為返回此響應(yīng)(稱為 If-Modified-Since HTTP 標頭)。由于服務(wù)器可以告訴 Googlebot 自從上次抓取后網(wǎng)頁沒有更改過,因此可節(jié)省帶寬和開銷 。 |
| 305(使用代理) | 請求者只能使用代理訪問請求的網(wǎng)頁。如果服務(wù)器返回此響應(yīng),那么,服務(wù)器還會指明請求者應(yīng)當(dāng)使用的代理。 |
| 307(臨時重定向) | 服務(wù)器目前正從不同位置的網(wǎng)頁響應(yīng)請求,但請求者應(yīng)繼續(xù)使用原有位置來進行以后的請求。此代碼與響應(yīng) GET 和 HEAD 請求的 301 代碼類似,會自動將請求者轉(zhuǎn)到不同的位置。但由于 Googlebot 會繼續(xù)抓取原有位置并將其編入索引,因此您不應(yīng)使用此代碼來通知 Googlebot 某個頁面或網(wǎng)站已被移動。 |
4xx(請求錯誤)
這些狀態(tài)代碼表示,請求可能出錯,已妨礙了服務(wù)器對請求的處理。
| 代碼 | 說明 |
| 400(錯誤請求) | 服務(wù)器不理解請求的語法。 |
| 401(未授權(quán)) | 請求要求進行身份驗證。登錄后,服務(wù)器可能會返回對頁面的此響應(yīng)。 |
| 403(已禁止) | 服務(wù)器拒絕請求。如果在 Googlebot 嘗試抓取您網(wǎng)站上的有效網(wǎng)頁時顯示此狀態(tài)代碼(您可在 Google 網(wǎng)站管理員工具中診斷下的網(wǎng)絡(luò)抓取頁面上看到此狀態(tài)代碼),那么,這可能是您的服務(wù)器或主機拒絕 Googlebot 對其進行訪問。 |
| 404(未找到) | 服務(wù)器找不到請求的網(wǎng)頁。例如,如果請求是針對服務(wù)器上不存在的網(wǎng)頁進行的,那么,服務(wù)器通常會返回此代碼。 如果您的網(wǎng)站上沒有 robots.txt 文件,而您在 Google 網(wǎng)站管理員工具"診斷"標簽的 robots.txt 頁上發(fā)現(xiàn)此狀態(tài),那么,這是正確的狀態(tài)。然而,如果您有 robots.txt 文件而又發(fā)現(xiàn)了此狀態(tài),那么,這說明您的 robots.txt 文件可能是命名錯誤或位于錯誤的位置。(該文件應(yīng)當(dāng)位于頂級域名上,且應(yīng)當(dāng)名為 robots.txt)。 如果您在 Googlebot 嘗試抓取的網(wǎng)址上發(fā)現(xiàn)此狀態(tài)(位于"診斷"標簽的 HTTP 錯誤頁上),那么,這表示 Googlebot 所追蹤的可能是另一網(wǎng)頁中的無效鏈接(舊鏈接或輸入有誤的鏈接)。 |
| 405(方法禁用) | 禁用請求中所指定的方法。 |
| 406(不接受) | 無法使用請求的內(nèi)容特性來響應(yīng)請求的網(wǎng)頁。 |
| 407(需要代理授權(quán)) | 此狀態(tài)代碼與 401(未授權(quán))類似,但卻指定了請求者應(yīng)當(dāng)使用代理進行授權(quán)。如果服務(wù)器返回此響應(yīng),那么,服務(wù)器還會指明請求者應(yīng)當(dāng)使用的代理。 |
| 408(請求超時) | 服務(wù)器等候請求時超時。 |
| 409(沖突) | 服務(wù)器在完成請求時發(fā)生沖突。服務(wù)器必須包含有關(guān)響應(yīng)中所發(fā)生的沖突的信息。服務(wù)器在響應(yīng)與前一個請求相沖突的 PUT 請求時可能會返回此代碼,同時會提供兩個請求的差異列表。 |
| 410(已刪除) | 如果請求的資源已被永久刪除,那么,服務(wù)器會返回此響應(yīng)。該代碼與 404(未找到)代碼類似,但在資源以前有但現(xiàn)在已經(jīng)不復(fù)存在的情況下,有時會替代 404 代碼出現(xiàn)。如果資源已被永久刪除,那么,您應(yīng)當(dāng)使用 301 代碼指定該資源的新位置。 |
| 411(需要有效長度) | 服務(wù)器不會接受包含無效內(nèi)容長度標頭字段的請求。 |
| 412(未滿足前提條件) | 服務(wù)器未滿足請求者在請求中設(shè)置的其中一個前提條件。 |
| 413(請求實體過大) | 服務(wù)器無法處理請求,因為請求實體過大,已超出服務(wù)器的處理能力。 |
| 414(請求的 URI 過長) | 請求的 URI(通常為網(wǎng)址)過長,服務(wù)器無法進行處理。 |
| 415(不支持的媒體類型) | 請求的格式不受請求頁面的支持。 |
| 416(請求范圍不符合要求) | 如果請求是針對網(wǎng)頁的無效范圍進行的,那么,服務(wù)器會返回此狀態(tài)代碼。 |
| 417(未滿足期望值) | 服務(wù)器未滿足"期望"請求標頭字段的要求。 |
5xx(服務(wù)器錯誤)
這些狀態(tài)代碼表示,服務(wù)器在嘗試處理請求時發(fā)生內(nèi)部錯誤。這些錯誤可能是服務(wù)器本身的錯誤,而不是請求出錯。
| 代碼 | 說明 |
| 500(服務(wù)器內(nèi)部錯誤) | 服務(wù)器遇到錯誤,無法完成請求。 |
| 501(尚未實施) | 服務(wù)器不具備完成請求的功能。例如,當(dāng)服務(wù)器無法識別請求方法時,服務(wù)器可能會返回此代碼。 |
| 502(錯誤網(wǎng)關(guān)) | 服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到了無效的響應(yīng)。 |
| 503(服務(wù)不可用) | 目前無法使用服務(wù)器(由于超載或進行停機維護)。通常,這只是一種暫時的狀態(tài)。 |
| 504(網(wǎng)關(guān)超時) | 服務(wù)器作為網(wǎng)關(guān)或代理,未及時從上游服務(wù)器接收請求。 |
| 505(HTTP 版本不受支持) | 服務(wù)器不支持請求中所使用的 HTTP 協(xié)議版本。 |
?
轉(zhuǎn)載于:https://www.cnblogs.com/elect-fans/archive/2011/12/22/2408607.html
總結(jié)
以上是生活随笔為你收集整理的GoAhead2.5源代码分析之6-访问验证(security.c)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tcl/tk过程
- 下一篇: GeneXus 图片的创建与删除1