完美解決beego 根目錄不能訪問靜態(tài)文件的問題
beego可算是Go框架里面文檔最多的了。學(xué)起來比較容易。但是框架自身的局限性卻帶了不小的問題。
最近我在處理flash跨域問題上就遇到個(gè)活生生的例子:
flash里面的as3訪問外網(wǎng)時(shí)沒啥問題??墒羌偃缤ㄟ^網(wǎng)頁調(diào)取的情況下,flash訪問的外網(wǎng)又與所在網(wǎng)頁不是一個(gè)域的。就會產(chǎn)生跨域問題。打開瀏覽器,f12之后,看到的就是flash沒有訪問你的url,而是訪問了這個(gè)url所在的域名根目錄下的配置文件crossdomain.xml。該配置文件來設(shè)置跨域訪問的權(quán)限。
這時(shí)候需要在你的域名根目錄下放個(gè)crossdomain.xml文件。恰巧我用的是beego,不支持這功能!~
解決辦法:
既然不支持那就把beego寫成一個(gè)文件服務(wù)器的功能即可。把我的crossdomain.xml同樣放到static下,在收到這個(gè)請求時(shí),直接將這個(gè)文件寫回到response即可。上代碼:
package main
import (
"fmt"
http "net/http"
"path/filepath"
"strings"
"github.com/astaxie/beego"
)
type MainController struct {
beego.Controller
}
func (this *MainController) Get() {
//this.Ctx.Request.URL= http://127.0.0.1/crossdomain.xml
orpath := this.Ctx.Request.URL.Path
if strings.Index(orpath, "crossdomain.xml") >= 0 {
fmt.Println(orpath) // /crossdomain.xml
path := filepath.Join(`static`, "crossdomain.xml")
http.ServeFile(this.Ctx.ResponseWriter, this.Ctx.Request, path)
}
this.Ctx.WriteString("hello world" + orpath)
}
func (this *MainController) Post() {
name := this.GetString("name")
sex := this.GetString("sex")
this.Ctx.WriteString(name + sex+"成功")
fmt.Println(name + sex)
}
func main() {
beego.Router("/*", &MainController{})
beego.Run()
}
當(dāng)然了這不是什么好辦法。只是拋磚引玉而已。所有的請求都要判斷一下,如果想完善一下,在路由配置時(shí)可以精確匹配url處理的controller就好了,而對于自己的controller就會沒有影響了
以上這篇完美解決beego 根目錄不能訪問靜態(tài)文件的問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Golang實(shí)現(xiàn)web文件共享服務(wù)的示例代碼
這篇文章主要介紹了Golang實(shí)現(xiàn)web文件共享服務(wù)的示例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-10-10
go面向?qū)ο蠓绞讲僮鱆SON庫實(shí)現(xiàn)四則運(yùn)算
這篇文章主要為大家介紹了go面向?qū)ο蠓绞讲僮鱆SON庫實(shí)現(xiàn)四則運(yùn)算的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
Go?net?http超時(shí)應(yīng)用場景全面詳解
HTTP是一個(gè)復(fù)雜的多階段協(xié)議,因此沒有一個(gè)一刀切的超時(shí)解決方案,在這篇文章中,我將分解您可能需要應(yīng)用超時(shí)的各個(gè)階段,并研究在服務(wù)器端和客戶端上執(zhí)行超時(shí)的不同方法2024-01-01
Go語言range關(guān)鍵字循環(huán)時(shí)的坑
今天小編就為大家分享一篇關(guān)于Go語言range關(guān)鍵字循環(huán)時(shí)的坑,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧2019-03-03
golang復(fù)制文件夾移動(dòng)到另一個(gè)文件夾實(shí)現(xiàn)方法詳解
這篇文章主要為大家介紹了golang復(fù)制文件夾并移動(dòng)到另一個(gè)文件夾實(shí)現(xiàn)方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-07-07
詳解Go多協(xié)程并發(fā)環(huán)境下的錯(cuò)誤處理
這篇文章主要介紹了詳解Go多協(xié)程并發(fā)環(huán)境下的錯(cuò)誤處理,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Goland 關(guān)閉自動(dòng)移除未使用的包操作
這篇文章主要介紹了Goland 關(guān)閉自動(dòng)移除未使用的包操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12

