播放框架重定向到自定义方案

时间:2016-08-23 12:30:05

标签: scala playframework playframework-2.0

我想从我的播放框架服务器重定向到file这样的自定义网址方案,但它不能正常工作

服务器在9000上运行,我的端点采用redirect_uri参数。 例如:http://localhost:9000/redirect?redirect_uri=file:///test

如果网址方案不是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 个答案:

答案 0 :(得分:1)

这不是Play(或任何其他Web框架)的问题。这就是浏览器的工作方式。

当涉及file:等协议时,浏览器会受到特殊限制。当然你可以争辩说,当文件是本地文件时应该没有任何问题,但一般的想法是安全的,所以这种限制是一种全局性的。

允许使用javascript:data:之类的伪协议,但不允许任何其他协议(当然除了http:https:)。

您可以在这里阅读更多内容:

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

如果您想将某些文件返回给访问者,您可以直接传输数据/提供下载选项。其他任何东西都行不通,应该让你重新考虑你的用例。