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,再到更强大的插件(如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对抗原产地政策! 构架相关推荐

  1. WhateverOrigin –与Heroku和Play对抗相同的原产地政策! 构架

    不久前,我在编码 Bitcoin Pie时发现需要克服臭名昭著的Same Origin Policy ,该政策限制了运行在客户端浏览器上的javascript可以访问的域. 通过Stack Overf ...

  2. jQuery / JavaScript:访问iframe的内容

    我想使用jQuery在iframe中操纵HTML. 我认为我可以通过将jQuery函数的上下文设置为iframe的文档来做到这一点,例如: $(function(){ //document ready ...

  3. ArcGIS For JavaScript API 默认参数

    "esri.config"的是在1.3版中的的"esriConfig"的替代品.如果您使用的是1.2或更低的版本,您应该参阅默认API v1.2和更低的配置.对 ...

  4. 项目管理的十大谈判必杀技

    谈判是项目经理的一项重要技能.项目经理需要就项目的方方面面进行谈判,从项目资源到项目范围再到项目完工时间.谈判所形成的一系列协议.决定和行动都会对项目成功产生正面或负面的影响.所以,项目经理一定要掌握 ...

  5. Spring Security 5.0.x 参考手册 【翻译自官方GIT-2018.06.12】

    源码请移步至: https://github.com/aquariuspj/spring-security/tree/translator/docs/manual/src/docs/asciidoc ...

  6. 新技术下的智慧政府门户网站群建设升级发展之路

    新技术下的智慧政府门户网站群建设升级发展之路 智慧城市.智慧政府.智慧地球村等已经成为热词.在这样一个大的环境下,所谓的智慧,概括成了三个大的方面.第一个叫电子政务.第二点是电子商务,这也是我们企业和 ...

  7. AI对抗冠状病毒爆发的11种方式

    随着COVID-19到达60多个国家/地区,全球病例超过95,500,死亡人数超过3,000,全世界正在尽最大努力避免这场灾难.尽管世卫组织和联合国等组织正在释放资金以促进研究,但许多组织都在寻求人工 ...

  8. 2021-01-24过去十年十大AI研究热点,分别为深度神经网络、特征抽取、图像分类、目标检测、语义分割、表示学习、生成对抗网络、语义网络、协同过滤和机器翻译。

    专利申请量全球第一!清华人工智能发展报告:国内215所高校成立相关本科专业 发布时间:01-2415:20万象大会年度获奖创作者,东方财富网官方帐号 1月20日,清华大学人工智能研究院.清华-中国工程 ...

  9. 一文尽览!文本对抗攻击基础、前沿及相关资源

    // 导读 深度学习的安全性问题已经逐渐被学术界.工业界所认识到并且重视,就文本领域而言,垃圾邮件检测.有害文本检测.恶意软件查杀等实用系统已经大规模部署了深度学习模型,安全性对于这些系统尤为重要. ...

最新文章

  1. 用gogs搭建属于自己的git网站
  2. 三星应用程序照相机(在com.sec.android.app),三星智能相机软件下载-三星智能相机app下载V1.4.0官方版-西西软件下载...
  3. java第二周学习总结
  4. 祝大家七夕快乐,邀你源码共读,顺带发点红包
  5. 剖析 Promise 之基础篇
  6. Kubernetes 也有局限性吗?
  7. 设计模式 责任链模式
  8. 命令行参数python sys模块_python教程--sys模块--命令行参数
  9. C 语言的数据类型宽度扩展
  10. 关于jpa的mappedBy用法
  11. launchpad乐器_launchpad可以作为一种乐器加入乐队吗?
  12. 掌勤综合劳务管理系统
  13. CSS 实现 系统登录界面 (二)
  14. UE4 Spline
  15. 微信小程序 自定义组件之《转盘》
  16. 一天外汇交易走势时间分布
  17. 这里也有计算机房英语,这里也有风景_800字
  18. ResNext架构解析:深度神经网络的聚合残差变换
  19. wireshark学习系列————4、实时捕捉数据包
  20. H-DenseUNet: Hybrid Densely Connected UNet for Liver and Tumor Segmentation From CT Volumes

热门文章

  1. Springmvc中提交from之后不跳转不进控制器
  2. Spring的properties属性配置文件和Spring常用注解
  3. vue 多页面多模块分模块打包 分插件安装_Vue渲染方式
  4. 使用Nginx搭建图片服务器(windows7)
  5. 1分钟学会python_快速入门:十分钟学会Python
  6. Java SE 知识点
  7. junit4和junit5_JUnit5 TestSuite替代
  8. java cucumber_为Java + STANDARD值引入Cucumber
  9. 测试Maven版本插件自动递增版本号
  10. java ee cdi_Java EE CDI限定词:快速浏览