gpt4 book ai didi

github - 如何获取 Play v1.2.5 以安装存储为 github 发布二进制文件的依赖项

转载 作者:行者123 更新时间:2023-12-01 14:45:38 24 4
gpt4 key购买 nike

我有一个 Play v1.2.5 应用程序,我已将其配置为依赖于 Github release binary .为了支持这一点,我在我的 dependencies.yml 文件中创建了一个自定义存储库,如下所示:

    - github:
type: http
artifact: "https://github.com/[organisation]/[module]/releases/download/[revision]/[module]-[revision].zip"
contains:
- tazmaniax -> *

它工作正常,Ivy 能够构建正确的 URL,但随后在获取二进制资源时出现问题,因为 Github 重定向到 AWS S3 并在此过程中将协议(protocol)从 https 更改为 http。显然,Ivy 默认使用的标准 Java HttpUrlConnection 将遵循重定向,只要协议(protocol)未更改。所以我想看看如何解决这个问题。

Play v1.2.5 在幕后使用了 Ivy v2.2.0。 Ivy 使用类 URLHandlerRegistry 来决定是否使用 HttpUrlConnection 或者是否使用 Apache HttpClient v3.x(如果它存在于类路径中)。 HttpClient v3.x 可能会导航使用不同协议(protocol)的重定向,但在任何情况下,默认框架库都不包含 HttpClient v3.x,我试图避免自定义 Play,因为我需要将其部署到 Heroku。

最终这是一个 Ivy 问题(或 Github,取决于你的观点)所以从长远来看,选项是:

  1. 修补 org.apache.ivy.util.url.BasicURLHandler 以支持根据 Download binary file from Github using Java 协议(protocol)更改处理重定向然后在未来的 Play 版本中获取更新版本的 Ivy。
  2. 修补 org.apache.ivy.util.url.URLHandlerRegistry 以加载更新版本的 Apache HttpClient,例如v4.2,并确保 HttpClient lib 与补丁一起包含在未来的 Play 版本中。然而,看起来 HttpClient v4.2 的早期版本本身在从 https 到 http 的重定向方面存在相同的问题,HTTPClient unable to establish route between https and http
  3. 让 Github 更改其重定向策略以在本例中保持相同的协议(protocol) https。

谁能建议最好的行动方案是什么?谢谢

== 2013 年 9 月 6 日更新 ==

重定向协议(protocol)的更改已由 github 解决,现在重定向在对 AWS S3 的请求上保留了“https”协议(protocol)。但是,现在当解决依赖关系时,从似乎缺少 cookie 的重定向返回 403,这是 AWS S3 身份验证所需的 - 我猜 Ivy 使用 HttpUrlConnection 的另一个问题,并且上述选项仍然主要相关,除了重点是添加缺少的 cookie 支持。

== 2014 年 10 月 18 日更新 ==

我尝试运行 play deps 。 --sync -Djsse.enableSNIExtension=false 按照建议但问题仍然存在。相关的响应头是:

Date:Sat, 18 Oct 2014 09:56:33 GMT
Location:https://s3.amazonaws.com/github-cloud/releases/25392769/2302c572-56ac-11e4-9623-393cafb2c0e5.zip?response-content-disposition=attachment%3B%20filename%3Dplay-markdown-1.9.zip&response-content-type=application/octet-stream&AWSAccessKeyId=AKIAISTNZFOVBIJMK3TQ&Expires=1413626253&Signature=7gI7fe0CeCzuu73KmcklIVSVPSQ%3D
Server:GitHub.com
Set-Cookie:user_session=692wy9ubPTtFAGT-WGjwFdykXc06-SELUtGGhg3i56vyT0SEVEI5UVnhkDsdQigEQagDUq54dyjTSEUW; path=/; expires=Sat, 01-Nov-2014 09:56:33 GMT; secure; HttpOnly
Set-Cookie:_gh_sess=eyJsYXN0X3dyaXRlIjoxNDEzNjI1ODE1MzkwLCJzZXNzaW9uX2lkIjoiYzFmNzQ0NDRlNmMzYjAwZTE2ZDg4MzVhMDJjNmVhZmMiLCJzcHlfcmVwbyI6InRhem1hbmlheC9wbGF5LW1hcmtkb3duIiwic3B5X3JlcG9fYXQiOjE0MTM2MjYxOTMsInJlZmVycmFsX2NvZGUiOiJodHRwczovL2dpdGh1Yi5jb20vaXZheW5iZXJnL3NlbGVjdDIvY29tbWl0cy9tYXN0ZXIiLCJjb250ZXh0IjoiLyJ9--8c45e0231ec4859b693de524e966cbc4a6582442; path=/; secure; HttpOnly
Status:302 Found
Strict-Transport-Security:max-age=31536000; includeSubdomains; preload

我确信问题是 Ivy(或 Ivy 调用的相关 HTTP 库)没有在 302 上设置 cookie,然后在没有这些 cookie 参数的情况下跟踪位置失败并返回 403。

最佳答案

我有一个类似的问题,通过禁用重定向失败的 Java HttpUrlConnection 所做的一些检查得到解决。您可以按照建议尝试标志 -Djsse.enableSNIExtension=false here

关于github - 如何获取 Play v1.2.5 以安装存储为 github 发布二进制文件的依赖项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17909245/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com