解决beego根目录不能访问静态文件的问题

 更新时间:2017年7月6日 23:34  点击:2374
本篇文章为大家介绍一下完美解决beego 根目录不能访问静态文件的问题,很不错哦,有需要的朋友就来参考一下吧。

beego可算是Go框架里面文档最多的了。学起来比较容易。但是框架自身的局限性却带了不小的问题。

最近我在处理flash跨域问题上就遇到个活生生的例子:

flash里面的as3访问外网时没啥问题。可是假如通过网页调取的情况下,flash访问的外网又与所在网页不是一个域的。就会产生跨域问题。打开浏览器,f12之后,看到的就是flash没有访问你的url,而是访问了这个url所在的域名根目录下的配置文件crossdomain.xml。该配置文件来设置跨域访问的权限。

这时候需要在你的域名根目录下放个crossdomain.xml文件。恰巧我用的是beego,不支持这功能!~

解决办法:

既然不支持那就把beego写成一个文件服务器的功能即可。把我的crossdomain.xml同样放到static下,在收到这个请求时,直接将这个文件写回到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()

}

 

当然了这不是什么好办法。只是抛砖引玉而已。所有的请求都要判断一下,如果想完善一下,在路由配置时可以精确匹配url处理的controller就好了,而对于自己的controller就会没有影响了

今天为大家分享一篇PHP7安装调试工具Xdebug扩展的方法教程,有需要的朋友就来参考一下吧。

前言

说到PHP代码调试,对于有经验的PHPer,通过echo、print_r、var_dump函数,或PHP开发工具zend  studio、editplus可解决大部分问题,但是对于PHP入门学习的童鞋来说有一定的难度,而且仅仅通过上述这些PHP调试手段,也很难准确发现PHP性能方面的问题,Xdebug是一个非常有用的PHP调试工具。

测试环境

  • LNMP 军哥一键包1.3版本

  • PHP 7.0.7

  • Xdebug 2.6

配置步骤

根据自身环境执行下列命令进行安装,切记不可原样复制执行

 

 代码如下复制代码

git clone git://github.com/xdebug/xdebug.git

cdxdebug

find/ -name phpize

/usr/bin/phpize

find/ -name php-config

./configure--enable-xdebug --with-php-config=/usr/local/php/bin/php-config

make

makeinstall

 

出现下图提示代表安装成功

开启扩展

 

 代码如下复制代码

find/ -name php.ini

vi/usr/local/php/etc/php.ini

添加 extension=xdebug.so

service restart php-fpm

 

访问phpinfo出现下图提示代表开启成功

本篇文章为大家介绍了Python实现两个list对应元素相减操作示例,结合实例进行了分析,有需要的朋友就来参考一下。

本文实例讲述了Python实现两个list对应元素相减操作。分享给大家供大家参考,具体如下:

两个list的对应元素操作,这里以相减为例:

 

 代码如下复制代码

# coding=gbk

v1=[21,34,45]

v2=[55,25,77]

#v = v2 - v1      # Error: TypeError: unsupported operand type(s) for -: 'list' and 'list'

v=list(map(lambdax: x[0]-x[1],zip(v2, v1)))

print("%s\n%s\n%s"%(v1, v2, v))

 

运行结果:

 

 代码如下复制代码

E:\Program\Python>del.py

[21,34,45]

[55,25,77]

[34,-9,32]

 

本篇文章主要介绍了Python实现删除文件中含“指定内容”的行功能,有需要的朋友可以来参考一下。

本文实例讲述了Python实现删除文件中含指定内容的行。分享给大家供大家参考,具体如下:

 

 代码如下复制代码

#!/bin/env python

importshutil, sys, os

darray=[

  "Entering directory",

  "In function ",

  "Leaving directory",

  "__NR_SYSCALL_BASE",

  "arm-hisiv100-linux-ar ",

  "arm-hisiv100-linux-gcc ",

  "but argument is of type",

  "dereferencing type-punned pointer will break strict-aliasing rules",

  "differ in signedness",

  "does break strict-aliasing rules",

  "embedded '\\0' in format",

  "excess elements in array initializer",

  "implicit declaration of",

  "make -C ",

  " rm -f",

  "this is the location of the previous definition",

  "warning: multi-line comment"

]

defisInArray (array, line):

  foriteminarray:

    ifiteminline:

      returnTrue

  returnFalse

if__name__=='__main__':

  argv=sys.argv

  argc=len(argv)

  ifargc<2:

    print"Usage: %s"%(os.path.basename(argv[0]))

    exit()

  fname=argv[1]

  fresult=fname+".result"

  withopen(fname,'r') as f:

    withopen(fresult,'w') as g:

      forlineinf.readlines():

        ifnotisInArray(darray, line):

          g.write(line)

 

[!--infotagslink--]

相关文章