【问题标题】:Play framework redirect to custom schemes播放框架重定向到自定义方案
【发布时间】:2016-08-23 12:30:04
【问题描述】:

我想从我的播放框架服务器重定向到自定义 url 方案,如 file,但它不起作用

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

如果url scheme不是http或者https,浏览器不会被重定向到

路线:

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)
  }
}

【问题讨论】:

    标签: scala playframework playframework-2.0


    【解决方案1】:

    这不是 Play(或任何其他网络框架)的问题。这正是浏览器的预期工作方式。

    当涉及file: 等协议时,浏览器会受到特殊限制。当然,您可以争辩说当文件是本地文件时不应该有任何问题,但总体思路是为了安全起见,因此这种限制是一种全局性的。

    有一些伪协议,例如 javascript:data:,它们是被允许的,但其他任何东西都不应该被允许(当然,http:https: 除外)。

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

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


    如果您想将一些文件返回给您的访问者,您只需流式传输数据/提供下载选项即可。其他任何事情都行不通,应该让您重新考虑您的用例。

    【讨论】:

      猜你喜欢
      • 2014-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-10
      • 2013-11-19
      相关资源
      最近更新 更多