Goahead是一種輕量級嵌入式web服務(wù)器,全部代碼開源,可以在多種平臺編譯運(yùn)行,
gahead具備以下典型特性(引用自https://www.oschina.net/p/goahead?hmsr=aladdin1e1)
可使用 SNMP 代理
支持 SSL v3
具有搜索引擎
支持 ASP、JavaScript、CGI、DHTML
容易移植和系統(tǒng)集成
可不使用文件系統(tǒng)
下載源路徑如下
https://gitee.com/mirrors/GoAhead
goahead在linux下的安裝和簡單使用可以參考以下鏈接
https://blog.csdn.net/weihan0208/article/details/118483839
goahead的源碼在簡易使用,僅僅用于請求文件時,基本無需修改源代碼,按照流程編譯運(yùn)行即可,比如將網(wǎng)頁文件(index.html)放在 /var/www/goahead路徑下,服務(wù)器的IP地址為192.168.0.20,綁定80端口
在瀏覽器內(nèi)輸入192.168.0.20/index.html,即可訪問成功
一般在大多數(shù)情況下簡單的網(wǎng)頁盡可以在本地直接使用瀏覽器打開,但是當(dāng)網(wǎng)頁代碼中存在ifreme時,加載子網(wǎng)頁就會存在報錯,此時goahead便可以發(fā)揮作用,如下圖
當(dāng)然網(wǎng)頁可執(zhí)行的功能不僅包括文件請求,還有大量紛繁復(fù)雜的操作,大多數(shù)操作goahead也是支持的,但是需要使用路由文件定義相關(guān)的操作,部分操作需要修改服務(wù)器代碼才可以實現(xiàn),goahead源碼提供了基本的route.txt文件,路徑為 ./src/route.txt,用于支持基礎(chǔ)訪問,其內(nèi)容如下
路由文件的基本使用方法可以參鏈接:
https://blog.csdn.net/weixin_44074105/article/details/124930732
Handler | 作用 |
action | 用于將URL的請求與C函數(shù)綁定的處理程序 |
continue | 不進(jìn)行任何操作的偽處理程序,常用于登陸驗證。 |
cgi | 為 CGI 程序提供服務(wù)的處理程序 |
file | 用于提供網(wǎng)頁、圖像和靜態(tài)資源的處理程序 |
jst | 為動態(tài)內(nèi)容提供 Javascript 模板的處理程序 |
options | 用于提供 HTTP 選項和跟蹤方法的處理程序 |
redirect | 處理route重定向的處理程序 |
upload | 處理文件上傳的處理程序 |
在源碼文件中提供的例程中
1. “route uri=/”
可以認(rèn)為是萬能文件路由,瀏覽器的任何文件訪問,均可以通過此請求到相應(yīng)的資源文件
2. “route uri=/action handler=action”
Action請求需要在服務(wù)器的源文件中添加對應(yīng)的action代碼實現(xiàn),例如用戶登錄,服務(wù)器參數(shù)設(shè)置等操作,均可以用action實現(xiàn),參考鏈接
https://blog.csdn.net/weihan0208/article/details/118483839
3. “route uri=/cgi-bin dir=cgi-bin handler=cgi”
cgi請求,常用于調(diào)用CGI子程序,一般來說,cgi-bin只是用于標(biāo)記請求為cgi,dir=cgi-bin用于標(biāo)記CGI程序的存儲位置,cgi的編譯及安裝,詳細(xì)使用辦法參考鏈接
https://blog.csdn.net/weixin_40732273/article/details/107835028
4. “route uri=/jst extensions=jst handler=jst”
Jst實際是JSP中的(JavaServer? Pages Standard Tag Library),其基本介紹可以參考
https://www.xjx100.cn/news/453296.html?action=onClick
簡單使用方法參考:
https://blog.csdn.net/weixin_45553150/article/details/116651170
本處不再贅述
5. Goahead同時提供了簡單的用戶登錄驗證過程
使用以下路由可以完成表單驗證形式
route uri=/pub/
Route uri=/action/login methods=POST handler=action redirect=200@/ redirect=401@/pub/login.html
route uri=/action/logout methods=POST handler=action redirect=200@/pub/login.html
route uri=/ auth=form handler=continue redirect=401@/pub/login.html
其中第一行為登錄前可訪問的公共文件
第二行用于登錄驗證操作,第三行用于退出登錄操作
第四行為萬能路由,可以訪問一切文件,但是前提是完成登錄驗證,否側(cè)將被重定向只至登錄界面
基本驗證形式
route uri=/auth/basic/ auth=basic abilities=manage
route uri=/auth/digest/ auth=digest abilities=manage
基本驗證方式較為簡單,可以參考下列文章中的內(nèi)容
https://blog.csdn.net/weihan0208/article/details/118494270
https://blog.csdn.net/weixin_44074105/article/details/124930732
GOahead的路由文件可以視作一種順序執(zhí)行,逐行匹配的腳本,可訪問的資源文件,由根據(jù)不同的method handler redirect auth等操作,可以產(chǎn)生條件執(zhí)行的簡單邏輯,根據(jù)此思路結(jié)合表單用戶登錄過程,用戶可以自行修改route文件實現(xiàn)對應(yīng)的操作,最終完成整個服務(wù)器,當(dāng)然,goahead不僅僅只有上邊的幾個操作,還可以實現(xiàn)文件下載文件上傳,等操作,感興趣的讀者可以自行查找相關(guān)的資料
本文誕生在項目開發(fā)實踐中,用于某型號的物聯(lián)網(wǎng)設(shè)備,以實現(xiàn)參數(shù)配置,在實際使用中,還發(fā)現(xiàn)如果要實現(xiàn)直接使用192.168.0.20進(jìn)入網(wǎng)頁還需要在源碼中添加部分代碼,否則,瀏覽器的訪問會出現(xiàn)以下問題
在瀏覽器輸入192.168.0.20,實際被服務(wù)器重定向到192.168.0.43/index.html(瀏覽器所在電腦的ip),經(jīng)過一番查找,最終找到問題所在。
在源碼中使用了auth=form登錄驗證,或者只有uri=/路由時,瀏覽器僅使用IP地址訪問服務(wù)器,服務(wù)器找不到瀏覽器找不到具體的請求,將會直接進(jìn)入
void websRedirect(Webs *wp, cchar *uri)(位于http.c文件)
函數(shù),重新向瀏覽器的訪問位置
實際上由于未更改任何源碼,所以代碼中:
host = websHostUrl ? websHostUrl : wp->ipaddr;
websHostUrl = NULL,host實際為wp->ipaddr,即瀏覽器所在終端的IP地址,如果要解決此問題,可以在
goahead.c文件中
函數(shù):MAIN(goahead, int argc, char **argv, char **envp)
中添加如下內(nèi)容
websSetHostUrl("192.168.0.20");
websSetIndex("index.html");
"192.168.0.20"為服務(wù)器ip,實際使用中需要使用系統(tǒng)的接口獲取之后轉(zhuǎn)化為字符串,或者存在公網(wǎng)ip或者域名時(外網(wǎng)訪問),填寫公網(wǎng)ip或者域名
index.html為默認(rèn)重定向文件
今天的分享就到這里啦,EBYTE每一天都致力于更好的助力物聯(lián)化、智能化、自動化的發(fā)展,提升資源利用率,更多產(chǎn)品更多資料,感興趣的小伙伴可以登錄我們的億佰特官網(wǎng)和企業(yè)公眾號(微信號:cdebyte)進(jìn)行了解,也可以直接撥打400電話咨詢技術(shù)專員!
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 南京辦事處葛經(jīng)理:17626012283
無錫辦事處劉經(jīng)理:13558641933
成都總部銷售經(jīng)理:
秦 科(無線模塊):18884314654 馮子恒(無線模塊):18828049434
蔡友銀(無線模塊):13882211021 葛宇龍(通信設(shè)備):19138800613
胡兵(外貿(mào)銷售經(jīng)理):18584911141、 sales06@ebyte.com
業(yè)務(wù)郵箱:support@cdebyte.com 全國銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號B5棟(前臺座機(jī):028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號