heroku_WhateverOrigin –与Heroku和Play对抗原产地政策! 构架
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
heroku_WhateverOrigin –与Heroku和Play对抗原产地政策! 构架相关推荐
- WhateverOrigin –与Heroku和Play对抗相同的原产地政策! 构架
不久前,我在编码 Bitcoin Pie时发现需要克服臭名昭著的Same Origin Policy ,该政策限制了运行在客户端浏览器上的javascript可以访问的域. 通过Stack Overf ...
- jQuery / JavaScript:访问iframe的内容
我想使用jQuery在iframe中操纵HTML. 我认为我可以通过将jQuery函数的上下文设置为iframe的文档来做到这一点,例如: $(function(){ //document ready ...
- ArcGIS For JavaScript API 默认参数
"esri.config"的是在1.3版中的的"esriConfig"的替代品.如果您使用的是1.2或更低的版本,您应该参阅默认API v1.2和更低的配置.对 ...
- 项目管理的十大谈判必杀技
谈判是项目经理的一项重要技能.项目经理需要就项目的方方面面进行谈判,从项目资源到项目范围再到项目完工时间.谈判所形成的一系列协议.决定和行动都会对项目成功产生正面或负面的影响.所以,项目经理一定要掌握 ...
- Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】
源码请移步至: https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc ...
- 新技术下的智慧政府门户网站群建设升级发展之路
新技术下的智慧政府门户网站群建设升级发展之路 智慧城市.智慧政府.智慧地球村等已经成为热词.在这样一个大的环境下,所谓的智慧,概括成了三个大的方面.第一个叫电子政务.第二点是电子商务,这也是我们企业和 ...
- AI对抗冠状病毒爆发的11种方式
随着COVID-19到达60多个国家/地区,全球病例超过95,500,死亡人数超过3,000,全世界正在尽最大努力避免这场灾难.尽管世卫组织和联合国等组织正在释放资金以促进研究,但许多组织都在寻求人工 ...
- 2021-01-24过去十年十大AI研究热点,分别为深度神经网络、特征抽取、图像分类、目标检测、语义分割、表示学习、生成对抗网络、语义网络、协同过滤和机器翻译。
专利申请量全球第一!清华人工智能发展报告:国内215所高校成立相关本科专业 发布时间:01-2415:20万象大会年度获奖创作者,东方财富网官方帐号 1月20日,清华大学人工智能研究院.清华-中国工程 ...
- 一文尽览!文本对抗攻击基础、前沿及相关资源
// 导读 深度学习的安全性问题已经逐渐被学术界.工业界所认识到并且重视,就文本领域而言,垃圾邮件检测.有害文本检测.恶意软件查杀等实用系统已经大规模部署了深度学习模型,安全性对于这些系统尤为重要. ...
最新文章
- 用gogs搭建属于自己的git网站
- 三星应用程序照相机(在com.sec.android.app),三星智能相机软件下载-三星智能相机app下载V1.4.0官方版-西西软件下载...
- java第二周学习总结
- 祝大家七夕快乐,邀你源码共读,顺带发点红包
- 剖析 Promise 之基础篇
- Kubernetes 也有局限性吗?
- 设计模式 责任链模式
- 命令行参数python sys模块_python教程--sys模块--命令行参数
- C 语言的数据类型宽度扩展
- 关于jpa的mappedBy用法
- launchpad乐器_launchpad可以作为一种乐器加入乐队吗?
- 掌勤综合劳务管理系统
- CSS 实现 系统登录界面 (二)
- UE4 Spline
- 微信小程序 自定义组件之《转盘》
- 一天外汇交易走势时间分布
- 这里也有计算机房英语,这里也有风景_800字
- ResNext架构解析:深度神经网络的聚合残差变换
- wireshark学习系列————4、实时捕捉数据包
- H-DenseUNet: Hybrid Densely Connected UNet for Liver and Tumor Segmentation From CT Volumes
热门文章
- Springmvc中提交from之后不跳转不进控制器
- Spring的properties属性配置文件和Spring常用注解
- vue 多页面多模块分模块打包 分插件安装_Vue渲染方式
- 使用Nginx搭建图片服务器(windows7)
- 1分钟学会python_快速入门:十分钟学会Python
- Java SE 知识点
- junit4和junit5_JUnit5 TestSuite替代
- java cucumber_为Java + STANDARD值引入Cucumber
- 测试Maven版本插件自动递增版本号
- java ee cdi_Java EE CDI限定词:快速浏览