heroku_WhateverOrigin –与Heroku和Play对抗原产地政策! 构架

heroku

不久前,在编写 Bitcoin Pie时 ,我发现有必要克服臭名昭著的Same Origin Policy ,该政策限制了运行在客户端浏览器上的javascript可以访问的域。 通过Stack Overflow,我找到了一个名为Any Origin的站点,这基本上是无需设置专用服务器即可击败Same Origin Policy的最简单方法。

一切都很好,直到大约一周前,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,再到更强大的插件(如RedisNeo4jMemcached)

现在在应用程序部分,我最近找到了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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值