2017-01-27 55 views
1

正如標題所示,我正在使用FeathersJS中的public/index.html的Vue.js單頁應用程序。由於我使用vue-router的HTML5歷史記錄模式,爲了將請求的前端位置重寫爲/index.html,我必須使用中間件connect-history-api-fallback在FeathersJS中使用connect-history-api-fallback中間件來提供Vue.js SPA

設置此中間件src/middleware只是app.use(notFound());之前不起作用,因爲羽毛高於一切服務於靜態文件,所以該請求被改寫什麼時候拿起/index.htmlnotFound供應404響應。

.use('/', serveStatic(app.get('public')))之前在src/app.js之內配置它也有問題,因爲它會將每個服務請求重寫爲/index.html,從而導致API調用不可用。

我結束了.configure(services)後移動serveStatic中間件,並把connect-history-api-fallback正上方,像這樣:

app.use(compress()) 
    .options('*', cors()) 
    .use(cors()) 
    // favicon and serveStatic used to be here 
    .use(bodyParser.json()) 
    .use(bodyParser.urlencoded({ extended: true })) 
    .configure(hooks()) 
    .configure(rest()) 
    .configure(socketio()) 
    .configure(services) 
    .use(require('connect-history-api-fallback')()) 
    // now they are down here 
    .use(favicon(path.join(app.get('public'), 'favicon.ico'))) 
    .use('/', serveStatic(app.get('public'))) 
    .configure(middleware); 

我的問題是:是否有任何性能或安全性的缺點,以這種方式?

回答

2

使用您發佈的配置,沒有任何安全問題。

如果您要將您的serveStatic中間件替換爲SSR中間件,您需要在SSR中間件之前刪除CORS頭,以避免通過跨站點請求(使用Cookie的CSRF「攻擊」)泄漏數據。

相關問題