【问题标题】:Downloading a https file in play framework works in development but not in production在 play 框架中下载 https 文件在开发中有效,但在生产中无效
【发布时间】:2017-04-15 13:00:27
【问题描述】:

我正在尝试下载指向文件 output.txt 的保管箱链接。像这样的:

URL link = new URL("https://dl.dropboxusercontent.com/1/view/XXX/file.txt");
ReadableByteChannel rbc = Channels.newChannel(link.openStream());
FileOutputStream fos = new FileOutputStream("output.txt");
fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);

当我在开发中运行我的应用程序(即activator run)时,它可以正常工作。当应用程序在生产中暂存和部署时,我在link.openStream() 步骤得到连接超时:

play.api.UnexpectedException: Unexpected exception[ConnectException: Connection timed out]

我可以将任何 http 文件或网站保存到生产环境中。它似乎只是在任何 https 文件上超时。关于如何开始解决这个问题有什么想法吗?

这和玩有什么关系还是我的 apache 服务器的配置问题?

谢谢

【问题讨论】:

  • 还是因为没有登录?
  • @ScaryWombat 不,它是一个可公开访问的链接,应该没有问题
  • 所以真名不是https://dl.dropboxusercontent.com/1/view/XXX/file.txt - BTW 为什么是https?
  • 这只是一个占位符链接。您可以假设任何 https url
  • 这是您的企业生产环境吗?如果是这样,可能是防火墙不允许完全出站访问。

标签: java apache https playframework download


【解决方案1】:

您可能在配置或从该服务器访问该 URL 时遇到问题。这是一个简单的部分。

您也可能遇到 SSL 证书的问题。因此,您需要下载它并在本地添加它,或者要求服务器所有者(那台服务器 - “https://dl.drop ...”)修复证书(这也可能是他们方面的问题)。

要验证您是否有证书问题 - 您可以使用此问题中描述的代码 Java and HTTPS url connection without downloading certificate 请勿在生产中使用此代码 - 因为您的安全性将为 0,此代码强制您可以信任任何证书,因此“https”自然会成为您的“http”。

第二个问题(我遇到过几次)的原因是生产环境有更严格的安全设置,我读取https资源的服务器有一些认证问题,比如过期,或者重新认证不正确。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 2013-12-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-10
    相关资源
    最近更新 更多