我有一个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并在此过程中将协议从https更改为http。显然,标准的Java HttpUrlConnection是Ivy默认使用的,只要协议没有改变,它就会遵循重定向。所以我想看看如何解决这个问题。
Play v1.2.5正在使用Ivy v2.2.0。 Ivy使用类URLHandlerRegistry来决定是否使用HttpUrlConnection,或者如果Apache HttpClient v3.x存在于类路径中。 HttpClient v3.x可能会导航使用不同协议的重定向,但在任何情况下,默认框架库都不包含HttpClient v3.x,我试图避免自定义Play,因为我需要将其部署到Heroku。
最终这是一个常春藤问题(或Github取决于你的观点)所以从长远来看,选项是:
有人可以就最佳行动方案提出建议吗? THX
== 2013年9月6日更新==
重定向上的协议更改已由github解决,现在重定向会保留对AWS S3请求的“https”协议。然而,现在当依赖关系被解析时,在重定向上返回403,这似乎是缺少cookie,这是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.
答案 0 :(得分:1)
我遇到了一个类似的问题,它通过禁用重定向失败的Java HttpUrlConnection 所做的一些检查来解决。您可以按建议here
尝试标记-Djsse.enableSNIExtension=false