使用gin 代理 web網頁

問web項目的代理,業界常用的方案是nginx做代理,這個是網上最多資料的。

因為我需要做自己的流量轉發,也就是所有訪問都要經過我的一個流量分發微服務,這和nginx作用沖突了。如果再加個nginx來做第一層方向代理和網頁的靜態資源代理的話,那么就多了一層,哪怕都在一臺服務器里,那也是多了一層性能損耗,所以我就在想,golang沒有自己的網頁代理方案嗎?不應該呀,非要依賴nginx?

網上的資料模模糊糊,提到gin框架有靜態資源代理的方法。但是有寫得不是很具體。我實測,是可以做到的。

第一步,打包web項目

打包完后的目錄結構大概是這樣的:
在這里插入圖片描述

gin 路由編寫

	//前期的gin配置和普通項目一樣即可,比如中間件等,該加就加。這里簡寫:router = gin.Default()// 靜態資源代理router.Static("/assets","./dist/assets")router.LoadHTMLFiles("./dist/index.html")router.GET("/", func(c *gin.Context) {// 渲染HTML模板c.HTML(200, "index.html", gin.H{})})

對,就這樣就可以了。瀏覽器直接打開localhost:8080(假設端口是8080),就可以訪問了。
PS:當然,跨域的問題還是得解決的。不然一樣會提示。

為什么不能在本地直接打開index.html?

經過上面的嘗試,我感覺gin也沒做啥呀,怎么就可以了呢?感覺就是把index.html文件發送給瀏覽器而已。

我就想為什么不能在瀏覽器打開index.html訪問呢?
有疑問總得嘗試下嘛。
直接用瀏覽器打開:
在這里插入圖片描述
一片空白,打開F12查看:
在這里插入圖片描述
哦,是因為訪問不到打包的兩個資源,于是我就看看:
在這里插入圖片描述
這不是路徑不對嗎?那就把index里的路徑引用改為相對路徑:
在這里插入圖片描述
刷新再看看:
在這里插入圖片描述
css文件已經可以正常引用了,再看看這個js,一直報cors跨域錯誤:
在這里插入圖片描述
請求的路徑已經是對的了,就是跨域不允許訪問,也對,瀏覽器為了安全,是不允許這樣加載js文件的。
這個跨域是真的煩,好人也不放過!

于是網上看看有沒有解決辦法,找到這么一個方案
思路就是把瀏覽器的跨域安全給禁用。以chrome瀏覽器為例:

  1. 復制你的快捷方式一份,然后右鍵,選擇屬性
  2. 在目標中的后面加上其中參數--disable-web-security --user-data-dir=c:\chomerdata,注意有個空格,完整的啟動參數如下:C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe --disable-web-security --user-data-dir=c:\chomerdata
  3. 從這個快捷方式啟動瀏覽器,然后將index.html拖動到瀏覽器打開,就可以解決跨域了

嘗試一下可以,但肯定不是可行的方案,畢竟瀏覽器的安全丟失了。

雖然沒有找到可行的本地啟動web網頁的好方案,但是也幫我了解了,web項目打包之后,就是那么點東西,理論上無需對其他工具有依賴,只需要有瀏覽器即可啟動。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/160437.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/160437.shtml
英文地址,請注明出處:http://en.pswp.cn/news/160437.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【C++干貨鋪】list的使用 | 模擬實現

個人主頁點擊直達:小白不是程序媛 C專欄:C干貨鋪 代碼倉庫:Gitee 目錄 list的介紹及使用 list的介紹 list的使用 list的構造 list迭代器的使用 list的增刪查改 list的模擬實現 結點的封裝 迭代器的封裝 list成員變量 構造函數 …

【大數據Hive】hive 優化策略之job任務優化

目錄 一、前言 二、hive執行計劃 2.1 hive explain簡介 2.1.1 語法格式 2.1.2 查詢計劃階段說明 2.2 操作演示 2.2.1 不加條件的查詢計劃分析 2.2.2 帶條件的查詢計劃分析 三、MapReduce屬性優化 3.1 本地模式 3.1.1 本地模式參數設置 3.1.2 本地模式操作演示 3.2 …

每日一題:LeetCode-589.N叉樹的前序遍歷

每日一題系列(day 01) 前言: 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 🌈 &#x1f50e…

package.json 依賴版本中的符號含義

依賴包的版本問題 實例說明~1.2.3主版本次要版本補丁版本;1.2.3 < version < 1.3.0;~1.2主版本次要版本;1.2.0 < version < 1.3.0~1主版本;1.0.0 < version < 2.0.0 符號實例版本范圍說明1.0.01.0.0鎖定1.0.0版本&#xff0c;必須這個版本。^會匹配最新的大…

7種SQL的進階用法

1.自定義排序&#xff08;ORDER BY FIELD&#xff09; 在MySQL中ORDER BY排序除了可以用ASC和DESC之外&#xff0c;還可以使用自定義排序方式來實現。 CREATE TABLE movies ( id INT PRIMARY KEY AUTO_INCREMENT, movie_name VARCHAR(255), actors VARCHAR(255), price DEC…

基于鵜鶘算法優化概率神經網絡PNN的分類預測 - 附代碼

基于鵜鶘算法優化概率神經網絡PNN的分類預測 - 附代碼 文章目錄 基于鵜鶘算法優化概率神經網絡PNN的分類預測 - 附代碼1.PNN網絡概述2.變壓器故障診街系統相關背景2.1 模型建立 3.基于鵜鶘優化的PNN網絡5.測試結果6.參考文獻7.Matlab代碼 摘要&#xff1a;針對PNN神經網絡的光滑…

基于向量加權平均算法優化概率神經網絡PNN的分類預測 - 附代碼

基于向量加權平均算法優化概率神經網絡PNN的分類預測 - 附代碼 文章目錄 基于向量加權平均算法優化概率神經網絡PNN的分類預測 - 附代碼1.PNN網絡概述2.變壓器故障診街系統相關背景2.1 模型建立 3.基于向量加權平均優化的PNN網絡5.測試結果6.參考文獻7.Matlab代碼 摘要&#xf…

win10系統中,任務欄卡住,鼠標移動到任務欄轉圈加載中

原因&#xff1a; 1.系統更新導致的問題 2.任務欄的“資訊與興趣導致” 解決&#xff1a; 方法一&#xff1a;重新啟動資源管理器任務 1.快捷鍵調出任務管理器&#xff1a;ctrlshiftesc,或ctrlaltdel 1.1.找到“windows資源管理器&#xff0c;鼠標右鍵&#xff0c;選擇重…

邊云協同架構設計

文章目錄 一. "邊云協同"是什么&#xff1f;二. "邊云協同"主要包括6種協同2.1 資源協同2.2 數據協同2.3 智能協同2.4 應用管理協同2.5 業務管理協同2.6 服務協同 三. "邊云協同"的優勢 其它相關推薦&#xff1a; 系統架構之微服務架構 系統架構…

python文本

文本 除了數字 Python 還可以操作文本&#xff08;由 str 類型表示&#xff0c;稱為“字符串”&#xff09;。 這包括字符 "!", 單詞 "rabbit", 名稱 "Paris", 句子 "Got your back." 等等. "Yay! :)"。 它們可以用成對的單…

【JS】Chapter15-高階技巧

站在巨人的肩膀上 黑馬程序員前端JavaScript入門到精通全套視頻教程&#xff0c;javascript核心進階ES6語法、API、js高級等基礎知識和實戰教程 &#xff08;十五&#xff09;高階技巧 1. 深淺拷貝 開發中我們經常需要復制一個對象。如果直接用賦值會有下面問題&#xff1a;/…

微信訂房功能怎么做_公眾號里怎么實現在線訂房系統

微信公眾號在線訂房系統&#xff1a;一鍵解決您的住宿問題 在當今數字化時代&#xff0c;微信公眾號已經成為人們生活中不可或缺的一部分。它提供了各種各樣的功能和服務&#xff0c;讓我們的生活變得更加便捷和高效。而如今&#xff0c;微信公眾號也實現了在線訂房功能&#…

什么是應急演練腳本?其設計原則是什么?

應急演練腳本是一種系統性、有計劃的模擬性文件&#xff0c;旨在測試和評估組織在緊急情況下的應對能力。這種腳本提供了一系列步驟和場景&#xff0c;以確保團隊能夠高效、協調地應對各種緊急事件。以下將詳細探討應急演練腳本的定義、設計原則以及實施過程。 一、應急演練腳本…

常見面試題-Redis持久化策略

談談Redis 的持久化策略&#xff1f; 參考文章&#xff1a; Redis 持久化機制演進與百度智能云的實踐 Redis的確是將數據存儲在內存的&#xff0c;但是也會有相關的持久化機制將內存持久化備份到磁盤&#xff0c;以便于重啟時數據能夠重新恢復到內存中&#xff0c;避免數據丟…

【Python 千題 —— 基礎篇】奇數列表

題目描述 題目描述 創建奇數列表。使用 for 循環創建一個包含 20 以內奇數的列表。 輸入描述 無輸入。 輸出描述 輸出創建的列表。 示例 示例 ① 輸出&#xff1a; 創建的奇數列表為: [1, 3, 5, 7, 9, 11, 13, 15, 17, 19]代碼講解 下面是本題的代碼&#xff1a; #…

9. 回文數 --力扣 --JAVA

題目 給你一個整數 x &#xff0c;如果 x 是一個回文整數&#xff0c;返回 true &#xff1b;否則&#xff0c;返回 false 。 回文數是指正序&#xff08;從左向右&#xff09;和倒序&#xff08;從右向左&#xff09;讀都是一樣的整數。 例如&#xff0c;121 是回文&#xff0…

二、爬蟲-爬取肯德基在北京的店鋪地址

1、算法框架解釋 針對這個案例&#xff0c;現在對爬蟲的基礎使用做總結如下&#xff1a; 1、算法框架 (1)設定傳入參數 ~url: 當前整個頁面的url:當前頁面的網址 當前頁面某個局部的url:打開檢查 ~data:需要爬取數據的關鍵字&…

DB2中實現數據字段的拼接(LISTAGG() 與 xml2clob、xmlagg)

DB2中實現數據字段拼接&#xff08;LISTAGG 與 xml2clob、xmlagg&#xff09; 1. 使用函數LISTAGG()1.1 同oracle實現方式1.2 DB2中使用LISTAGG()1.2.1 關于DB2版本1.2.2 數據準備1.2.3 代碼實現 2 解決DB2中關于 LISTAGG() 超長問題2.1 使用xmlagg xmlelement2.2 將xml標簽去…

數據結構與算法編程題11

已知兩個鏈表A和B分別表示兩個集合&#xff0c;其元素遞增排列。 請設計算法求出A與B的交集&#xff0c;并存放于A鏈表中。 a: 1, 2, 2, 4, 5, 7, 8, 9, 10 b: 1, 2, 3, 6, 7, 8 #include <iostream> using namespace std;typedef int Elemtype; #define ERROR 0; #defin…

【iOS】實現評論區展開效果

文章目錄 前言實現行高自適應實現評論展開效果解決cell中的buttom的復用問題 前言 在知乎日報的評論區中&#xff0c;用到了Masonry行高自適應來實現評論的展開&#xff0c;這里設計許多控件的約束問題&#xff0c;當時困擾了筆者許久&#xff0c;特此撰寫博客記錄 實現行高自…