不久前,我在编码 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

WhateverOrigin –与Heroku和Play对抗相同的原产地政策! 构架相关推荐

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

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

  2. 哥伦比亚大学AI实验室主任Hod Lipson:阻碍无人驾驶技术发展的7个误区

    来源:智车科技 摘要:我们发现有些针对无人驾驶的误解还在广泛肆意传播,并且这些信息会被反对者拿来和对抗无人驾驶的推广政策. 每年,全世界都有将近120万人死于车祸,这个死亡率相当于每年释放10个广岛级 ...

  3. 第二章:泥潭中的群体

    由老青蛙一手推动的"公路基建项目",在和区政府签了一个意向书之后,很快就尘埃落定了.三角鳄因为这项意向书,其政绩在同类中显得极为突出,上级领导对此大为嘉许,没多久就将三角鳄提拨到了 ...

  4. 基于Jittor框架实现LSGAN图像生成对抗网络

    基于Jittor框架实现LSGAN图像生成对抗网络 生成对抗网络(GAN, Generative Adversarial Networks )是一种深度学习模型,是近年来复杂分布上无监督学习最具前景的 ...

  5. pytorch生成对抗示例

    pytorch生成对抗示例 本文对ML(机器学习)模型的安全漏洞的认识,并将深入了解对抗性机器学习的热门话题.图像添加难以察觉的扰动会导致模型性能大不相同.通过图像分类器上的示例探讨该主题.使用第一种 ...

  6. 深度卷积生成对抗网络

    深度卷积生成对抗网络 Deep Convolutional Generative Adversarial Networks GANs如何工作的基本思想.可以从一些简单的,易于抽样的分布,如均匀分布或正 ...

  7. 生成性对抗网络技术实现

    生成性对抗网络技术实现 Generative Adversarial Networks 以某种形式,使用深度神经网络学习从数据点到标签的映射.这种学习被称为区别性学习,因为希望能够区分猫和狗的照片.量 ...

  8. 无监督域对抗算法:ICCV2019论文解析

    无监督域对抗算法:ICCV2019论文解析 Drop to Adapt: Learning Discriminative Features for Unsupervised Domain Adapta ...

  9. 生成对抗网络(GAN)

    学习目标 目标 了解GAN的作用 说明GAN的训练过程 知道DCGAN的结构 应用 应用DCGAN模型实现手写数字的生成 5.1.1 GAN能做什么 GAN是非监督式学习的一种方法,在2014年被提出 ...

最新文章

  1. mahout kmeans
  2. Sun Solaris 9 下Squid 代理服务器的配置笔记
  3. 【LetCode 算法修炼】Add Two Numbers
  4. java类的命名规范_浅谈Java中的命名规范
  5. 微信小程序遍历wx:for,wx:for-item,wx:key
  6. java 高级工程师面试
  7. 去除android控件滑动的时候出现的阴影
  8. 面向对象的设计模式(七),观察者模式
  9. View如何设置16进制颜色值
  10. phpstorm常用功能快捷键(mac)
  11. SQLyog官网下载,SQLyog-12.4.2下载,SQLyog最新版下载,SQLyog Download
  12. 【对抗攻击代码实战】对抗样本的生成——FGSM
  13. python用户画像_研究用户应该从哪几个维度去构建用户画像模型?
  14. 001 第一季:SpringBoot2核心技术
  15. 关于印发《深圳市福田区支持战略性新兴产业和未来产业集群发展若干措施》的通知
  16. c# Create Excel file and save as PDF
  17. Python模块之paramiko
  18. CouchDB小全 --- 网上很棒的介绍CouchDB的博文
  19. 如何保护电子邮箱安全?163邮箱安全吗?
  20. 零基础搭建:可扫码、实时分析的设备巡检系统

热门文章

  1. apache.camel_Apache Camel 3.1 –即将推出更多骆驼核心优化
  2. java jwt 验证_教程:用Java创建和验证JWT
  3. java流写入数据库_Java 8:在2分钟内将智能流与数据库一起使用
  4. gatling 使用_使用Gatling + Gradle + Jenkins Pipeline为您的JAX-RS(和JavaEE)应用程序进行连续压力测试...
  5. 美图手机投射功能在哪_在Java 8中进行投射(还有其他功能?)
  6. java java se_Java 8 SE可选,严格的方法
  7. undertow ssl_SSL与WildFly 8和Undertow
  8. 在Java中将时间单位转换为持续时间
  9. 设计模式 生成器_生成器设计模式的应用
  10. lucene 搜索_使用Lucene的搜索服务器搜索Jira问题