Comments (6)
I wrote a simple example, is it what you need?
package main
import (
"path"
"strings"
"github.com/buaazp/fasthttprouter"
"github.com/valyala/fasthttp"
)
type CORS struct {
origins map[string]bool
}
func (c *CORS) handler(h fasthttp.RequestHandler) fasthttp.RequestHandler {
return func(ctx *fasthttp.RequestCtx) {
if host := string(ctx.Host()); c.origins[host] {
ctx.Response.Header.Set("Access-Control-Allow-Origin", host)
}
h(ctx)
}
}
var (
cors = &CORS{
origins: map[string]bool{
"127.0.0.1:8080": true,
},
}
)
func main() {
routerPath := "/js/*filepath" // router's path.
filepath := path.Join("/path/to/js") // file's path
// Create a file handler.
fileHandler := fasthttp.FSHandler(filepath, strings.Count(routerPath[:len(routerPath)-10], "/"))
router := fasthttprouter.New()
// Wrapped by CORS handler.
router.GET(routerPath, cors.handler(fileHandler))
fasthttp.ListenAndServe(":8080", router.Handler)
}
from fasthttprouter.
@buaazp 我觉得ServeFiles
有点难扩展,比如CORS之类的中间件,好像用ServeFiles
无法实现。是否有其他方法我没想到的。
from fasthttprouter.
Great. Thanks its working.
from fasthttprouter.
@headwindfly 感谢帮忙解答。
ServeFiles
这些接口都是继承自httprouter
,并不是我自己设计的,再加上我自己的线上业务并没有用到这种文件接口,所以也就没关注过,我回头想想怎么把它搞成标准的router用法吧~
from fasthttprouter.
@buaazp :) 好的,这个issue应该可以关闭了
from fasthttprouter.
This solution doesn't work. The browser sends an Origin header not a Host header.
from fasthttprouter.
Related Issues (20)
- random fail response from server HOT 4
- Router allocates on the heap HOT 1
- Is it willing to support the sub-router? HOT 1
- Handling subdomains HOT 1
- JWT middleware support HOT 3
- file server HOT 2
- go1.9后net/http比fasthttp 慢多少呢?
- Static files from root
- Add Group and Middleware support HOT 2
- Parameters as request instead of endpoint url HOT 10
- wildcard route ':slug' conflicts with existing children HOT 2
- Integrate with gorilla/websocket HOT 1
- Recognize defined path in handler HOT 1
- REPO HAS MOVED HOT 5
- How to init fake RequestCtx for unit test's? HOT 1
- don't concern about method HOT 1
- How to make ReverseProxy on fasthttprouter HOT 1
- Sir, how do I set the maximum file upload size? HOT 1
- Abandoned. Use fasthttp/router instead. HOT 1
- How to update a route path? HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from fasthttprouter.