我想从我的播放框架服务器重定向到file
这样的自定义网址方案,但它不能正常工作
服务器在9000上运行,我的端点采用redirect_uri
参数。
例如:http://localhost:9000/redirect?redirect_uri=file:///test
如果网址方案不是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)
}
}
答案 0 :(得分:1)
这不是Play(或任何其他Web框架)的问题。这就是浏览器的工作方式。
当涉及file:
等协议时,浏览器会受到特殊限制。当然你可以争辩说,当文件是本地文件时应该没有任何问题,但一般的想法是安全的,所以这种限制是一种全局性的。
允许使用javascript:
和data:
之类的伪协议,但不允许任何其他协议(当然除了http:
和https:
)。
您可以在这里阅读更多内容:
https://code.google.com/archive/p/browsersec/wikis/Part2.wiki#Redirection_restrictions
如果您想将某些文件返回给访问者,您可以直接传输数据/提供下载选项。其他任何东西都行不通,应该让你重新考虑你的用例。