heroku
一切都很好,直到大约一周前,Any Origin停止为某些(但不是全部)https请求工作。 碰巧的是,那段时间我在Play上获得了一些经验! 和Heroku,这使我能够快速构建名为Anyever Origin(.org!)的Any Origin的开源克隆(在github上 )。 对于那些不熟悉Play的人! 和Heroku,让我简单介绍一下:
Heroku是领先的PaaS提供商之一。 PaaS只是一种奇特的说法:“让我们来管理您的服务器,可伸缩性和安全性……您只是专注于编写应用程序。” Heroku最初是一家Ruby商店,但现在支持多种编程语言和平台,包括python,java,scala,javascript / Node.Js。 它们最酷的一点是,它们提供了大量的插件 ,从简单的东西(如自定义域和日志记录)到计划,电子邮件,SMS,再到更强大的插件(如Redis , Neo4j和Memcached) 。
现在在应用程序部分,我最近找到了Play! 框架 。 Play是一个Java / Scala框架,用于编写Web应用程序,该框架借鉴了Ruby on Rails / Django的思想,即为您提供完整的预构建解决方案,让您专注于编写实际的业务逻辑,同时允许您以后自定义所有内容。需要。 我鼓励您在Play!主页上观看12分钟的视频,该视频演示了如何从头开始实现强大的功能。 玩! 在Heroku中受本地支持,因此,要运行生产应用程序,实际上要做的就是:
- 新玩
- 编写一些业务逻辑(控制器/视图/无关)
- git init…git提交
- “ heroku应用程序添加”以创建新应用程序(别忘了添加“ –stack cedar”以使用最新一代的Cedar堆栈)
- “ git push heroku master”上传您的应用程序的新版本……它是自动构建和部署的。
有了这些工具(实际上只花了几天的时间我就学会了),我着手构建了Whatever Origin。 处理JSONP请求是一项受IO约束的任务-您的服务器基本上会执行HTTP请求,并在完成后将响应发送给使用javascript / JSON魔术包装的客户端。 幸运的是Play!对Async IO的支持确实非常简单。 看看我的单个get方法 :
public static void get(final String url, final String callback) {
F.Promise<WS.HttpResponse> remoteCall = WS.url(url).getAsync();
await(remoteCall, new F.Action<WS.HttpResponse>() {
public void invoke(WS.HttpResponse result) {
String responseStr = getResponseStr(result, url); // code for getResponseStr() not included in this snippet to hide some ugly irrelevant details
// http://blog.altosresearch.com/supporting-the-jsonp-callback-protocol-with-jquery-and-java/
if ( callback != null ) {
response.contentType = "application/x-javascript";
responseStr = callback + "(" + responseStr + ")";
} else {
response.contentType = "application/json";
}
renderJSON(responseStr);
}
});
}
第一行启动对请求的URL的异步获取,然后注册到完成事件,并释放线程。 您几乎可以认为这是Node.Js !
实际上,我花了最长的时间进行开发和调试的是JSONP本身。 我发现的有关此信息以及jQuery的客户端支持有些棘手,而且我花了几个小时来处理过度逃逸的JSON和其他有趣的东西。 完成之后,我只是将其推到github,以每年仅7美元的价格注册了whatorigin.org域,并用Bitcoin Pie代码中的whatorigin.org替换了anyorigin.com,瞧,这个网站重新上线了。
我真的很喜欢在2011年开发网站–整个行业都在致力于使个人/小型创业公司轻松开发出令人赞叹的产品。
参考: WhateverOrigin –与Heroku和Play对抗相同的原产地政策! 来自JCG合作伙伴 Ron Gross的A Quantum Immortal博客的框架
翻译自: https://www.javacodegeeks.com/2012/01/whateverorigin-combat-same-origin.html
heroku