2016-08-23 55 views
0

我想從我的發揮框架服務器的自定義URL方案重定向像file,但其沒有工作播放框架重定向到定製方案

服務器上運行的9000,我的端點需要redirect_uri PARAM。 例如:http://localhost:9000/redirect?redirect_uri=file:///test

的瀏覽器不重定向到如果URL方案不是httphttps

路線:

GET /redirect MyController.testRedirect(redirect_uri:String) 

控制器:

import play.api.mvc._ 
import play.api.Logger 

object MyController extends Controller { 

    def testRedirect(redirect_uri: String) = Action { 
    Logger.info(s"Opening: $redirect_uri") 
    Redirect(redirect_uri) 
    } 
} 

回答

1

這不是一個問題Play(或任何其他網絡框架)。這正是瀏覽器如何工作的原因。

當涉及file:等協議時,瀏覽器會有特殊限制。當然你可以爭辯說,當文件是本地文件時應該沒有任何問題,但總的想法是安全的,所以這種限制是全球性的。

的是一些僞協議,如javascript:data:這是允許的,但是沒有別的應該被允許(除http:https:當然)。

你可以閱讀更多的在這裏:

https://code.google.com/archive/p/browsersec/wikis/Part2.wiki#Redirection_restrictions


如果你希望將一些文件返回給你的光臨,您可以只流中的數據/提供下載選項。其他任何東西都行不通,應該讓你重新思考你的用例。