• 关于

    PHP的数据类型介绍

    的搜索结果

回答

详细解答可以参考官方帮助文档 如果您初次使用阿里云关系型数据库 RDS,请参阅 阿里云关系型数据库 RDS 快速入门 系列文档,帮助您了解 RDS 并快速迁移本地数据库到 RDS 上。 My SQL快速入门 SQL Server快速入门 PostgreSQL快速入门 PPAS快速入门 数据库引擎 以下是对四种数据库引擎的介绍: 阿里云数据库 MySQL 版 MySQL 是全球最受欢迎的开源数据库,作为开源软件组合 LAMP(Linux + Apache + MySQL + Perl/PHP/Python)中的重要一环,广泛应用于各类应用。 Web2.0 时代,风靡全网的社区论坛软件系统 Discuz! 和博客平台 WordPress 均基于 MySQL 实现底层架构。Web3.0 时代,阿里巴巴、Facebook、Google 等大型互联网公司都采用更为灵活的 MySQL 构建了成熟的大规模数据库集群。 阿里云数据库 MySQL 版基于 Alibaba 的 MySQL 源码分支,经过双 11 高并发、大数据量的考验,拥有优良的性能和吞吐量。除此之外,阿里云数据库 MySQL 版还拥有经过优化的读写分离、数据压缩、智能调优等高级功能。 当前 RDS for MySQL 支持 5.5、5.6 和 5.7 版本。 阿里云数据库 SQL Server 版 SQL Server 是发行最早的商用数据库产品之一,作为 Windows 平台(IIS + .NET + SQL Server)中的重要一环,支撑着大量的企业应用。SQL Server 自带的 Management Studio 管理软件内置了大量图形工具和丰富的脚本编辑器。您通过可视化界面即可快速上手各种数据库操作。 阿里云数据库 SQL Server 版不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的 License 费用,您无需再额外支出 License 费用。 当前 RDS for SQL Server 支持以下版本: SQL Server 2008 R2 企业版 SQL Server 2012 Web版、标准版、企业版 SQL Server 2016 Web版、标准版、企业版 阿里云数据库 PostgreSQL 版 PostgreSQL 是全球最先进的开源数据库。作为学院派关系型数据库管理系统的鼻祖,它的优点主要集中在对 SQL 规范的完整实现以及丰富多样的数据类型支持,包括JSON 数据、IP 数据和几何数据等,而这些数据类型大部分商业数据库都不支持。 除了完美支持事务、子查询、多版本控制(MVCC)、数据完整性检查等特性外,阿里云数据库 PostgreSQL 版还集成了高可用和备份恢复等重要功能,减轻您的运维压力。 当前 RDS for PostgreSQL 支持 9.4/10 版本。 阿里云数据库 PPAS 版 PPAS(Postgres Plus Advanced Server)是一个稳定、安全且可扩展的企业级关系型数据库,基于全球最先进的开源数据库 PostgreSQL,并在性能、应用方案和兼容性等方面进行了增强,提供直接运行 Oracle 应用的能力。您可以在 PPAS 上稳定地运行各种企业应用,同时得到更高性价比的服务。 阿里云数据库 PPAS 版集成了账号管理、资源监控、备份恢复和安全控制等功能,并将持续地更新完善。 当前 RDS for PPAS 支持 9.3/10 版本。
2019-12-01 22:57:16 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 如果您初次使用阿里云关系型数据库 RDS,请参阅 阿里云关系型数据库 RDS 快速入门 系列文档,帮助您了解 RDS 并快速迁移本地数据库到 RDS 上。 My SQL快速入门 SQL Server快速入门 PostgreSQL快速入门 PPAS快速入门 数据库引擎 以下是对四种数据库引擎的介绍: 阿里云数据库 MySQL 版 MySQL 是全球最受欢迎的开源数据库,作为开源软件组合 LAMP(Linux + Apache + MySQL + Perl/PHP/Python)中的重要一环,广泛应用于各类应用。 Web2.0 时代,风靡全网的社区论坛软件系统 Discuz! 和博客平台 WordPress 均基于 MySQL 实现底层架构。Web3.0 时代,阿里巴巴、Facebook、Google 等大型互联网公司都采用更为灵活的 MySQL 构建了成熟的大规模数据库集群。 阿里云数据库 MySQL 版基于 Alibaba 的 MySQL 源码分支,经过双 11 高并发、大数据量的考验,拥有优良的性能和吞吐量。除此之外,阿里云数据库 MySQL 版还拥有经过优化的读写分离、数据压缩、智能调优等高级功能。 当前 RDS for MySQL 支持 5.5、5.6 和 5.7 版本。 阿里云数据库 SQL Server 版 SQL Server 是发行最早的商用数据库产品之一,作为 Windows 平台(IIS + .NET + SQL Server)中的重要一环,支撑着大量的企业应用。SQL Server 自带的 Management Studio 管理软件内置了大量图形工具和丰富的脚本编辑器。您通过可视化界面即可快速上手各种数据库操作。 阿里云数据库 SQL Server 版不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的 License 费用,您无需再额外支出 License 费用。 当前 RDS for SQL Server 支持以下版本: SQL Server 2008 R2 企业版 SQL Server 2012 Web版、标准版、企业版 SQL Server 2016 Web版、标准版、企业版 阿里云数据库 PostgreSQL 版 PostgreSQL 是全球最先进的开源数据库。作为学院派关系型数据库管理系统的鼻祖,它的优点主要集中在对 SQL 规范的完整实现以及丰富多样的数据类型支持,包括JSON 数据、IP 数据和几何数据等,而这些数据类型大部分商业数据库都不支持。 除了完美支持事务、子查询、多版本控制(MVCC)、数据完整性检查等特性外,阿里云数据库 PostgreSQL 版还集成了高可用和备份恢复等重要功能,减轻您的运维压力。 当前 RDS for PostgreSQL 支持 9.4/10 版本。 阿里云数据库 PPAS 版 PPAS(Postgres Plus Advanced Server)是一个稳定、安全且可扩展的企业级关系型数据库,基于全球最先进的开源数据库 PostgreSQL,并在性能、应用方案和兼容性等方面进行了增强,提供直接运行 Oracle 应用的能力。您可以在 PPAS 上稳定地运行各种企业应用,同时得到更高性价比的服务。 阿里云数据库 PPAS 版集成了账号管理、资源监控、备份恢复和安全控制等功能,并将持续地更新完善。 当前 RDS for PPAS 支持 9.3/10 版本。
2019-12-01 22:57:16 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 如果您初次使用阿里云关系型数据库 RDS,请参阅 阿里云关系型数据库 RDS 快速入门 系列文档,帮助您了解 RDS 并快速迁移本地数据库到 RDS 上。 My SQL快速入门 SQL Server快速入门 PostgreSQL快速入门 PPAS快速入门 数据库引擎 以下是对四种数据库引擎的介绍: 阿里云数据库 MySQL 版 MySQL 是全球最受欢迎的开源数据库,作为开源软件组合 LAMP(Linux + Apache + MySQL + Perl/PHP/Python)中的重要一环,广泛应用于各类应用。 Web2.0 时代,风靡全网的社区论坛软件系统 Discuz! 和博客平台 WordPress 均基于 MySQL 实现底层架构。Web3.0 时代,阿里巴巴、Facebook、Google 等大型互联网公司都采用更为灵活的 MySQL 构建了成熟的大规模数据库集群。 阿里云数据库 MySQL 版基于 Alibaba 的 MySQL 源码分支,经过双 11 高并发、大数据量的考验,拥有优良的性能和吞吐量。除此之外,阿里云数据库 MySQL 版还拥有经过优化的读写分离、数据压缩、智能调优等高级功能。 当前 RDS for MySQL 支持 5.5、5.6 和 5.7 版本。 阿里云数据库 SQL Server 版 SQL Server 是发行最早的商用数据库产品之一,作为 Windows 平台(IIS + .NET + SQL Server)中的重要一环,支撑着大量的企业应用。SQL Server 自带的 Management Studio 管理软件内置了大量图形工具和丰富的脚本编辑器。您通过可视化界面即可快速上手各种数据库操作。 阿里云数据库 SQL Server 版不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的 License 费用,您无需再额外支出 License 费用。 当前 RDS for SQL Server 支持以下版本: SQL Server 2008 R2 企业版 SQL Server 2012 Web版、标准版、企业版 SQL Server 2016 Web版、标准版、企业版 阿里云数据库 PostgreSQL 版 PostgreSQL 是全球最先进的开源数据库。作为学院派关系型数据库管理系统的鼻祖,它的优点主要集中在对 SQL 规范的完整实现以及丰富多样的数据类型支持,包括JSON 数据、IP 数据和几何数据等,而这些数据类型大部分商业数据库都不支持。 除了完美支持事务、子查询、多版本控制(MVCC)、数据完整性检查等特性外,阿里云数据库 PostgreSQL 版还集成了高可用和备份恢复等重要功能,减轻您的运维压力。 当前 RDS for PostgreSQL 支持 9.4/10 版本。 阿里云数据库 PPAS 版 PPAS(Postgres Plus Advanced Server)是一个稳定、安全且可扩展的企业级关系型数据库,基于全球最先进的开源数据库 PostgreSQL,并在性能、应用方案和兼容性等方面进行了增强,提供直接运行 Oracle 应用的能力。您可以在 PPAS 上稳定地运行各种企业应用,同时得到更高性价比的服务。 阿里云数据库 PPAS 版集成了账号管理、资源监控、备份恢复和安全控制等功能,并将持续地更新完善。 当前 RDS for PPAS 支持 9.3/10 版本。
2019-12-01 22:57:16 0 浏览量 回答数 0

Quick BI 数据可视化分析平台

2020年入选全球Gartner ABI魔力象限,为中国首个且唯一入选BI产品

回答

详细解答可以参考官方帮助文档 如果您初次使用阿里云关系型数据库 RDS,请参阅 阿里云关系型数据库 RDS 快速入门 系列文档,帮助您了解 RDS 并快速迁移本地数据库到 RDS 上。 My SQL快速入门 SQL Server快速入门 PostgreSQL快速入门 PPAS快速入门 数据库引擎 以下是对四种数据库引擎的介绍: 阿里云数据库 MySQL 版 MySQL 是全球最受欢迎的开源数据库,作为开源软件组合 LAMP(Linux + Apache + MySQL + Perl/PHP/Python)中的重要一环,广泛应用于各类应用。 Web2.0 时代,风靡全网的社区论坛软件系统 Discuz! 和博客平台 WordPress 均基于 MySQL 实现底层架构。Web3.0 时代,阿里巴巴、Facebook、Google 等大型互联网公司都采用更为灵活的 MySQL 构建了成熟的大规模数据库集群。 阿里云数据库 MySQL 版基于 Alibaba 的 MySQL 源码分支,经过双 11 高并发、大数据量的考验,拥有优良的性能和吞吐量。除此之外,阿里云数据库 MySQL 版还拥有经过优化的读写分离、数据压缩、智能调优等高级功能。 当前 RDS for MySQL 支持 5.5、5.6 和 5.7 版本。 阿里云数据库 SQL Server 版 SQL Server 是发行最早的商用数据库产品之一,作为 Windows 平台(IIS + .NET + SQL Server)中的重要一环,支撑着大量的企业应用。SQL Server 自带的 Management Studio 管理软件内置了大量图形工具和丰富的脚本编辑器。您通过可视化界面即可快速上手各种数据库操作。 阿里云数据库 SQL Server 版不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的 License 费用,您无需再额外支出 License 费用。 当前 RDS for SQL Server 支持以下版本: SQL Server 2008 R2 企业版 SQL Server 2012 Web版、标准版、企业版 SQL Server 2016 Web版、标准版、企业版 阿里云数据库 PostgreSQL 版 PostgreSQL 是全球最先进的开源数据库。作为学院派关系型数据库管理系统的鼻祖,它的优点主要集中在对 SQL 规范的完整实现以及丰富多样的数据类型支持,包括JSON 数据、IP 数据和几何数据等,而这些数据类型大部分商业数据库都不支持。 除了完美支持事务、子查询、多版本控制(MVCC)、数据完整性检查等特性外,阿里云数据库 PostgreSQL 版还集成了高可用和备份恢复等重要功能,减轻您的运维压力。 当前 RDS for PostgreSQL 支持 9.4/10 版本。 阿里云数据库 PPAS 版 PPAS(Postgres Plus Advanced Server)是一个稳定、安全且可扩展的企业级关系型数据库,基于全球最先进的开源数据库 PostgreSQL,并在性能、应用方案和兼容性等方面进行了增强,提供直接运行 Oracle 应用的能力。您可以在 PPAS 上稳定地运行各种企业应用,同时得到更高性价比的服务。 阿里云数据库 PPAS 版集成了账号管理、资源监控、备份恢复和安全控制等功能,并将持续地更新完善。 当前 RDS for PPAS 支持 9.3/10 版本。
2019-12-01 22:57:16 0 浏览量 回答数 0

问题

用户指南-快速入门

如果您初次使用阿里云关系型数据库RDS,请参阅快速入门系列文档,帮助您快速上手RDS。 My SQL快速入门SQL Server快速入门PostgreSQL快速入门PPAS快速入门 数据库引擎 以下是对四...
李沃晟 2019-12-01 21:38:18 545 浏览量 回答数 0

问题

通过自动重连方式解决RDS闪断问题

RDS闪断解决方案 一RDS闪断的原因和影响: 1、    什么是闪断? 是指游戏APP与RDS之间的网络链路在短时间内(一般不超过三十秒) 发生了的中断。 2、 ...
nono20011908 2019-12-01 21:07:16 27529 浏览量 回答数 1

问题

用户指南- 典型应用 -开放搜索

开放搜索服务(OpenSearch)是一款结构化数据搜索托管服务,为移动应用开发者和网站站长提供简单、高效、稳定、低成本和可扩展的搜索解决方案。通过 OpenSearch 自带功能,可...
李沃晟 2019-12-01 21:39:48 570 浏览量 回答数 0

回答

下表介绍了Web+自2019年6月14日公测上线以来的迭代版本的重要功能说明以及相关文档链接。 2020-02-06 功能名称 功能描述 功能类型 相关文档 一键部署WordPress应用 可以在控制台上一键部署WordPress应用程序,默认使用单机部署的MySQL数据库,降低启动成本。 新增 一键启动WordPress 支持编排Redis资源 可以在控制台界面上直接添加和配置Redis资源。 新增 云数据库Redis 开放Nginx配置文件的编辑功能 在控制台概览页右侧可以查看各开发语言的快速入门交互式教程。 新增 反向代理服务器 免费的OSS存储空间 在创建应用的时候可以选择使用由系统提供的免费OSS存储空间。 优化 / 2019-12-05 功能名称 功能描述 功能类型 相关文档 支持域名托管 支持托管阿里云云解析和任何第三方域名服务提供商处注册的域名。 新增 域名托管 支持分批部署 当部署环境有多台实例的时候,支持按照指定规则进行分批部署,以保证业务不中断。 新增 部署环境 各开发语言的交互式教程 在控制台概览页右侧可以查看各开发语言的快速入门交互式教程。 新增 / 开通向导优化 支持一键开通及授权相关产品。 优化 开通Web+相关服务并授权 部署环境配置界面优化 以架构图的方式展现环境配置信息,并可以进行编辑操作。 优化 / 支持禁用健康检查 部署环境默认禁用健康检查,您可以在环境配置界面选择手动开启。 优化 配置健康检查 2019-09-29 功能名称 功能描述 功能类型 相关文档 代购ECS实例 支持使用控制台和CLI代购包年包月的ECS实例。 新增 ECS实例 代购SLB实例 支持使用CLI代购包年包月SLB实例。 新增 使用CLI配置SLB 代购RDS实例 支持使用CLI代购包年包月RDS实例。 新增 使用CLI配置RDS 支持HTTPS访问 可以在SLB和反向代理层配置证书实现HTTPS访问。 新增 为部署环境配置HTTPS 2019-09-25 功能名称 功能描述 功能类型 相关文档 正式商用 正式商用后Web+仍然免费,您只需要对用到的底层资源付费。 新增 / 2019-09-04 功能名称 功能描述 功能类型 相关文档 支持导入已购买的ECS实例 您在ECS控制台购买的ECS实例,可在Web+导入使用。 新增 导入ECS实例 支持.NET Core应用 支持在Web+控制台托管.NET Core应用。 新增 设置ASP.NET Core开发环境 部署ASP.NET Core应用至Web+ 支持Ruby应用 支持在Web+控制台托管Ruby应用。 新增 配置Ruby开发环境 部署Ruby on Rails应用至Web+ 显示部署环境资源 在部署环境概览页,可以展示部署环境内包含的资源。 新增 部署环境信息说明 2019-08-12 功能名称 功能描述 功能类型 相关文档 支持Python应用 支持在Web+控制台托管Python应用。 新增 设置Python开发环境 使用Flask开发应用 使用Django开发应用 反向代理优化 支持关闭反向代理服务器。 新增 反向代理服务器 2019-08-06 功能名称 功能描述 功能类型 相关文档 支持Go应用 支持在Web+控制台托管Go应用。 新增 设置Go开发环境 将Beego应用部署到Web+ 向Go应用的部署环境中添加RDS实例 支持PHP应用 支持在Web+控制台托管PHP应用。 新增 设置PHP开发环境 使用Symfony开发应用 使用Laravel框架开发应用 支持导入SLB实例 您在SLB控制台购买的SLB实例,可导入Web+使用。 新增 导入负载均衡SLB 应用生命周期挂钩脚本 Web+提供了通过设置命令来管理用户的服务进程,以及通过设置生命周期挂钩来简化部署、监控、运维和治理等应用生命周期管理操作。 新增 命令与生命周期挂钩 增加技术栈版本 在部分技术栈内,有多个技术栈版本可选择。 新增 技术栈 2019-07-25 功能名称 功能描述 功能类型 相关文档 功能优化 产品功能性能优化,使Web+的使用体验更良好。 优化 / 2019-07-15 功能名称 功能描述 功能类型 相关文档 支持Node.js应用 支持在Web+托管Node.js语言的应用。 新增 设置Node.js开发环境 将Express应用部署到Web+ 向Node.js应用部署环境中添加RDS数据库实例 支持RDS 支持在控制台和CLI内为部署环境配置RDS。 新增 云数据库RDS 变更操作清单 在部署环境中变更配置时,会罗列出变更资源的清单。 新增 / 2019-06-14 功能名称 功能描述 功能类型 相关文档 产品正式公测 Web+正式在阿里云公测上线,免费开放给用户托管应用。 新增 什么是Web应用托管服务Web+? 支持Java技术栈应用 支持在控制台和CLI内将Java技术栈的应用托管至Web+。 新增 设置Java开发环境 使用Spring Boot开发应用 向Java应用的部署环境中添加RDS实例 支持Tomcat技术栈应用 支持在控制台和CLI内将Tomcat技术栈的应用托管至Web+。 新增 项目文件夹结构设置 使用Web+部署Tomcat应用 日志和诊断 支持下载日志和诊断信息排查问题。 新增 查看日志 支持控制台部署 可以在控制台快速创建应用并部署。 新增 在Web+控制台快速部署应用 支持CLI部署 可以使用CLI快速创建应用并部署。 新增 使用CLI快速部署Java应用
1934890530796658 2020-03-23 15:41:58 0 浏览量 回答数 0

回答

  按照建站语言程序分类   可以分为ASP虚拟主机、。net虚拟主机、JSP虚拟主机、HTML虚拟主机以及全能型虚拟主机等。这些不同语言各自的特别,天下数据在《ASP、JSP、PHP三种网页动态语言对比》里面有详细的介绍。大家可以点进去查看。   按照服务器系统分类   一般分为windows虚拟主机和Linux虚拟主机。《服务器操作系统有哪些?》里面就详细的介绍了各大服务器操作系统的区别。   按照连接线路分类   可分为电信虚拟主机、网通虚拟主机、双线虚拟主机、多线BGP虚拟主机、香港虚拟主机、国外虚拟主机。而国外虚拟主机又可以分为:美国虚拟主机、日本虚拟主机、韩国虚拟主机等等。   按照网站类型分类   可分为标企业型虚拟主机、论坛型虚拟主机、门户型虚拟主机、准型虚拟主机、商务型虚拟主机等。 答案来源网络,供参考,希望对您有帮助
问问小秘 2019-12-02 02:20:39 0 浏览量 回答数 0

问题

如何选择合适的主机(三)

明确语言和数据库之后,您可以根据您网页空间大小选择具体主机,如下是几类比较典型的主机推荐案例: 1. 问:想建个企业网站主要展示我们公司的产品、介绍等,页面数量少网站空间...
kimberly0919 2019-12-01 21:20:50 6921 浏览量 回答数 1

回答

因此,我想我将最终回答我自己的问题,以便为记录提供完整的解决方案。但是必须感谢本·詹姆斯和凯拉什·巴杜,他们为此提供了线索。 简短回答 正如本·詹姆斯所说:不。 完整的SQL查询在PHP端不存在,因为令牌查询和参数分别发送到数据库。仅在数据库方面,存在完整查询。 即使试图在PHP端创建一个用于替换令牌的函数,也不能保证替换过程与SQL相同(如令牌类型,bindValue与bindParam等复杂的东西,...) 解决方法 这是我详细介绍Kailash Badu的答案的地方。通过记录所有SQL查询,我们可以看到服务器上实际运行的内容。使用mySQL,可以通过更新my.cnf(或Wamp服务器中的my.ini)并添加如下一行来完成: log=[REPLACE_BY_PATH]/[REPLACE_BY_FILE_NAME] 只是不要在生产中运行它!!!来源:stack overflow
保持可爱mmm 2020-05-17 12:11:08 0 浏览量 回答数 0

问题

开放搜索

开放搜索服务(OpenSearch)是一款结构化数据搜索托管服务,为移动应用开发者和网站站长提供简单、高效、稳定、低成本和可扩展的搜索解决方案。通过 OpenSearch 自带功能,可...
云栖大讲堂 2019-12-01 21:42:02 826 浏览量 回答数 0

回答

云服务器(Elastic Compute Service,简称ECS)是阿里云提供的性能卓越、稳定可靠、弹性扩展的IaaS(Infrastructure as a Service)级别云计算服务。云服务器ECS免去了您采购IT硬件的前期准备,让您像使用水、电、天然气等公共资源一样便捷、高效地使用服务器,实现计算资源的即开即用和弹性伸缩。阿里云ECS持续提供创新型服务器,解决多种业务需求,助力您的业务发展。 为什么选择云服务器ECS 选择云服务器ECS,您可以轻松构建具有以下优势的计算资源: 无需自建机房,无需采购以及配置硬件设施。 分钟级交付,快速部署,缩短应用上线周期。 快速接入部署在全球范围内的数据中心和BGP机房。 成本透明,按需使用,支持根据业务波动随时扩展和释放资源。 提供GPU和FPGA等异构计算服务器、弹性裸金属服务器以及通用的x86架构服务器。 支持通过内网访问其他阿里云服务,形成丰富的行业解决方案,降低公网流量成本。 提供虚拟防火墙、角色权限控制、内网隔离、防病毒攻击及流量监控等多重安全方案。 提供性能监控框架和主动运维体系。 提供行业通用标准API,提高易用性和适用性。 更多选择理由,请参见云服务器ECS的优势和应用场景。 产品架构 云服务器ECS主要包含以下功能组件: 实例:等同于一台虚拟服务器,内含CPU、内存、操作系统、网络配置、磁盘等基础的计算组件。实例的计算性能、内存性能和适用业务场景由实例规格决定,其具体性能指标包括实例vCPU核数、内存大小、网络性能等。 镜像:提供实例的操作系统、初始化应用数据及预装的软件。操作系统支持多种Linux发行版和多种Windows Server版本。 块存储:块设备类型产品,具备高性能和低时延的特性。提供基于分布式存储架构的云盘、共享块存储以及基于物理机本地存储的本地盘。 快照:某一时间点一块云盘或共享块存储的数据状态文件。常用于数据备份、数据恢复和制作自定义镜像等。 安全组:由同一地域内具有相同保护需求并相互信任的实例组成,是一种虚拟防火墙,用于设置实例的网络访问控制。 网络: 专有网络(Virtual Private Cloud):逻辑上彻底隔离的云上私有网络。您可以自行分配私网IP地址范围、配置路由表和网关等。 经典网络:所有经典网络类型实例都建立在一个共用的基础网络上。由阿里云统一规划和管理网络配置。 更多功能组件详情,请参见云服务器ECS产品详情页。 以下为云服务器ECS的产品组件架构图,图中涉及的功能组件的详细介绍请参见相应的帮助文档。whatIsECS 产品定价 云服务器ECS支持包年包月、按量付费、预留实例券、抢占式实例等多种账单计算模式。更多详情,请参见计费概述和云产品定价页。 管理工具 通过注册阿里云账号,您可以在任何地域下,通过阿里云提供的以下途径创建、使用或者释放云服务器ECS: ECS管理控制台:具有交互式操作的Web服务页面。关于管理控制台的操作,请参见常用操作导航。 ECS API:支持GET和POST请求的RPC风格API。关于API说明,请参见API参考。以下为调用云服务器ECS API的常用开发者工具: 命令行工具CLI:基于阿里云API建立的灵活且易于扩展的管理工具。您可基于命令行工具封装阿里云的原生API,扩展出您需要的功能。 OpenAPI Explorer:提供快速检索接口、在线调用API和动态生成SDK示例代码等服务。 阿里云SDK:提供Java、Python、PHP等多种编程语言的SDK。 资源编排(Resource Orchestration Service):通过创建一个描述您所需的所有阿里云资源的模板,然后资源编排将根据模板,自动创建和配置资源。 运维编排服务(Operation Orchestration Service):自动化管理和执行运维任务。您可以在执行模板中定义执行任务、执行顺序、执行输入和输出等,通过执行模板达到自动化完成运维任务的目的。 Terraform:能够通过配置文件在阿里云以及其他支持Terraform的云商平台调用计算资源,并对其进行版本控制的开源工具。 阿里云App:移动端类型的管理工具。 Alibaba Cloud Toolkit:阿里云针对IDE平台为开发者提供的一款插件,用于帮助您高效开发并部署适合在云端运行的应用。 部署建议 您可以从以下维度考虑如何启动并使用云服务器ECS: 地域和可用区 地域指阿里云的数据中心,地域和可用区决定了ECS实例所在的物理位置。一旦成功创建实例后,其元数据(仅专有网络VPC类型ECS实例支持获取元数据)将确定下来,并无法更换地域。您可以从用户地理位置、阿里云产品发布情况、应用可用性、以及是否需要内网通信等因素选择地域和可用区。例如,如果您同时需要通过阿里云内网使用云数据库RDS,RDS实例和ECS实例必须处于同一地域中。更多详情,请参见地域和可用区。 高可用性 为保证业务处理的正确性和服务不中断,建议您通过快照实现数据备份,通过跨可用区、部署集、负载均衡(Server Load Balancer)等实现应用容灾。 网络规划 阿里云推荐您使用专有网络VPC,可自行规划私网IP,全面支持新功能和新型实例规格。此外,专有网络VPC支持多业务系统隔离和多地域部署系统的使用场景。更多详情,请参见专有网络(Virtual Private Cloud)。 安全方案 您可以使用云服务器ECS的安全组,控制ECS实例的出入网访问策略以及端口监听状态。对于部署在云服务器ECS上的应用,阿里云为您提供了免费的DDoS基础防护和基础安全服务,此外您还可以使用阿里云云盾,例如: 通过DDoS高防IP保障源站的稳定可靠。更多详情,请参见DDoS高防IP文档。 通过云安全中心保障云服务器ECS的安全。更多详情,请参见云安全中心文档。 相关服务 使用云服务器ECS的同时,您还可以选择以下阿里云服务: 根据业务需求和策略的变化,使用弹性伸缩(Auto Scaling)自动调整云服务器ECS的数量。更多详情,请参见弹性伸缩。 使用专有宿主机(Dedicated Host)部署ECS实例,可让您独享物理服务器资源、降低上云和业务部署调整的成本、满足严格的合规和监管要求。更多详情,请参见专有宿主机DDH。 使用容器服务Kubernetes版在一组云服务器ECS上通过Docker容器管理应用生命周期。更多详情,请参见容器服务Kubernetes版。 通过负载均衡(Server Load Balancer)对多台云服务器ECS实现流量分发的负载均衡目的。更多详情,请参见负载均衡。 通过云监控(CloudMonitor)制定实例、系统盘和公网带宽等的监控方案。更多详情,请参见云监控。 在同一阿里云地域下,采用关系型云数据库(Relational Database Service)作为云服务器ECS的数据库应用是典型的业务访问架构,可极大降低网络延时和公网访问费用,并实现云数据库RDS的最佳性能。云数据库RDS支持多种数据库引擎,包括MySQL、SQL Server、PostgreSQL、PPAS和MariaDB。更多详情,请参见关系型云数据库。 在云市场获取由第三方服务商提供的基础软件、企业软件、网站建设、代运维、云安全、数据及API、解决方案等相关的各类软件和服务。您也可以成为云市场服务供应商,提供软件应用及服务。更多详情,请参见云市场文档。 更多方案,请参见阿里云解决方案。
1934890530796658 2020-03-24 14:03:02 0 浏览量 回答数 0

问题

深入理解Magento – 第六章 – 高级Magento模型 :报错

深入理解Magento 作者:Alan Storm 翻译:Hailong Zhang 第六章 – 高级Magento模型 我们讲过Magento有两种模型,简单模型和EAV(En...
kun坤 2020-06-14 15:19:25 0 浏览量 回答数 1

问题

深入理解Magento – 第六章 – 高级Magento模型:配置报错 

深入理解Magento 作者: Alan Storm 翻译: Hailong Zhang 第六章 – 高级Magento模型 我们讲过Magento有两种模型,简单模型和EAV(En...
kun坤 2020-06-02 14:47:07 2 浏览量 回答数 1

问题

深入理解Magento – 第六章 – 高级Magento模型 - Magento报错

" 深入理解Magento 作者:Alan Storm 翻译:Hailong Zhang 第六章 – 高级Magento模型 我们讲过Magento有两种模型,简单模型和EAV&#x...
montos 2020-06-03 20:30:01 2 浏览量 回答数 1

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:24 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:23 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:23 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:22 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:23 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:23 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:24 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:22 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:24 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:24 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:23 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:23 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:24 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 本文讲解如何搭建一个基于OSS的移动应用数据直传服务并设置上传回调。 背景 快速搭建移动应用直传服务介绍了如何快速搭建一个基于OSS的移动应用数据直传服务。但这一方案有个问题:对于Android/iOS移动应用来说,只需要申请一次STS凭证,就能多次使用该STS凭证上传数据到OSS。这就导致应用服务器无法得知用户上传了哪些数据 ,作为该app的开发者,就没法对应用上传数据进行管理。为此OSS提供了上传回调方案。 原理介绍 上传回调的原理如下图所示: OSS在收到Android/iOS移动应用的数据(上图中步骤5)和在返回用户上传结果(上图中步骤6)之间,触发一个上传回调任务,即第上图中步骤5.5,先回调用户服务器,得到应用服务器返回的内容,然后将此内容返回给Android/iOS移动应用。详情请参见Callback API文档。 上传回调的作用 通过上传回调让用户应用服务器知道当前上传文件的基本信息。 返回的基本信息可以包含下表中一个或多个变量,返回内容的格式在Android/iOS上传时指定。 系统变量 含义 bucket 移动应用上传文件到OSS的哪个存储空间 object 移动应用上传文件到OSS后保存的文件名 etag 该上传的文件的ETag,即返回给用户的etag字段 size 上传文件的大小 mimeType 资源类型 imageInfo.height 图片高度 imageInfo.width 图片宽度 imageInfo.format 图片格式,如jpg、png等 通过上传回调设定自定义参数,达到信息传递的目的。 假如您是一个开发者,您想知道当前用户所使用的app版本、当前用户所在的操作系统版本、用户的GPS信息、用户的手机型号。您可以在Android/iOS端上传文件时,指定自定义参数,如下所示: x:version:指定APP版本 x:system:指定操作系统版本 x:gps:指定GPS信息 x:phone:指定手机型号 Android/iOS移动应用上传文件到OSS时附带上述参数,然后OSS把这些参数放到CallbackBody里发给应用服务器。这样应用服务器就能收到这些信息,达到信息传递的目的。 上传回调对应用服务器的要求 您必须部署一个可以接收POST请求的服务,这个服务必须有公网地址,如www.abc.com/callback.php,或者外网IP地址。 您必须给OSS正确的返回,返回格式必须是JSON格式,内容自定义。OSS会把应用服务器返回的内容,原封不动地返回给Android/iOS移动应用。详情请参见Callback API文档。注意 在移动应用端设置上传回调 要让OSS在接收上传请求时触发上传回调,移动应用在构造上传请求时必须把如下内容指定到上传请求里面: 要回调到哪个服务器(callbackUrl),如 http://abc.com/callback.php,这个地址必须是公网能够访问的。 上传回调给应用服务器的内容(callbackBody),可以是上述OSS返回应用服务器系统变量的一个或者多个。 假如您的用户服务器上传回调地址是http://abc.com/callback.php。您想获取手机上传的文件名称、文件的大小,并且定义了x:phone变量是指手机型号,x:system变量是指操作系统版本。 上传回调示例分以下两种: iOS指定上传回调示例:OSSPutObjectRequest * request = [OSSPutObjectRequest new]; request.bucketName = @"<bucketName>"; request.objectKey = @"<objectKey>"; request.uploadingFileURL = [NSURL fileURLWithPath:@<filepath>"]; // 设置回调参数 request.callbackParam = @{ @"callbackUrl": @"http://abc.com/callback.php", @"callbackBody": @"filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}" }; // 设置自定义变量 request.callbackVar = @{ @"x:phone": @"iphone6s", @"x:system": @"ios9.1" }; Android指定上传回调示例:PutObjectRequest put = new PutObjectRequest(testBucket, testObject, uploadFilePath); ObjectMetadata metadata = new ObjectMetadata(); metadata.setContentType("application/octet-stream"); put.setMetadata(metadata); put.setCallbackParam(new HashMap<String, String>() { { put("callbackUrl", "http://abc.com/callback.php"); put("callbackBody", "filename=${object}&size=${size}&photo=${x:photo}&system=${x:system}"); } }); put.setCallbackVars(new HashMap<String, String>() { { put("x:phone", "IPOHE6S"); put("x:system", "YunOS5.0"); } }); 应用服务器收到的回调请求 根据设定的不同URL和回调内容,应用服务器收到的回调请求会所不同,示例如下: POST /index.html HTTP/1.0 Host: 121.43.113.8 Connection: close Content-Length: 81 Content-Type: application/x-www-form-urlencoded User-Agent: ehttp-client/0.0.1 authorization: kKQeGTRccDKyHB3H9vF+xYMSrmhMZjzzl2/kdD1ktNVgbWEfYTQG0G2SU/RaHBovRCE8OkQDjC3uG33esH2txA== x-oss-pub-key-url: aHR0cDovL2dvc3NwdWJsaWMuYWxpY2RuLmNvbS9jYWxsYmFja19wdWJfa2V5X3YxLnBlbQ== filename=test.txt&size=5&photo=iphone6s&system=ios9.1 更多内容请参见Callback API文档。 应用服务器判断回调请求是否来自OSS 如果您的回调服务器被人恶意攻击了,例如恶意回调您的应用服务器,导致应用服务器收到一些非法的请求,影响正常逻辑,此时您就需要判断回调请求是否来自OSS。 判断的方法主要是根据OSS给应用服务器返回的头部内容中 x-oss-pub-key-url和authorization这两个参数进行RSA校验。只有通过RSA校验才能说明这个请求是来自OSS。本文提供的示例程序有实现的示例供您参考。 应用服务器收到回调请求后的处理 应用服务器在校验这个请求是来自OSS后,指定回调给应用服务器的内容格式,如 filename=test.txt&size=5&photo=iphone6s&system=ios9.1 应用服务器就可以根据OSS的返回内容,解析得到自己想要的数据。得到这个数据后,应用服务器可以把数据存放起来,方便后续管理。 OSS如何处理应用服务器的返回内容 有两种情况: OSS将回调请求发送给应用服务器,但是应用服务器接收失败或者访问不通,OSS会返回给Android/iOS移动应用203的状态码,但是数据已经存放到OSS上了。 应用服务器接收到OSS的回调请求,并且正确返回了,OSS会返回给Android/iOS移动应用状态码200, 并把应用服务器返回给OSS的内容原封不动地返回给Android/iOS移动应用。 示例程序下载 示例程序只是完成了如何检查应用服务器收到的签名, 您需要自行增加对应用服务器收到回调内容的格式解析 。 Java: 下载地址:单击这里。 运行方法:解压后运行java -jar oss-callback-server-demo.jar 9000。9000是运行的端口,可以自己指定。 说明 这个jar例子在java 1.7运行通过,如果有问题可以自己依据提供的代码进行修改。这是一个maven项目。 PHP: 下载地址:单击这里 运行方法:将解压包部署到Apache环境下,因为PHP本身语言的特点,某些数据头部的获取会依赖于环境。请参考例子根据实际环境进行修改。 Python: 下载地址:单击这里。 运行方法:解压后直接运行python callback_app_server.py即可,程序自实现了一个简单的http server,运行该程序可能需要安装rsa的依赖。 Ruby版本: 下载地址:单击这里。 运行方法: ruby aliyun_oss_callback_server.rb。
2019-12-01 23:13:22 0 浏览量 回答数 0
阿里云企业服务平台 陈四清的老板信息查询 上海奇点人才服务相关的云产品 爱迪商标注册信息 安徽华轩堂药业的公司信息查询 小程序定制 上海微企信息技术相关的云产品 国内短信套餐包 ECS云服务器安全配置相关的云产品 天籁阁商标注册信息 开发者问答 阿里云建站 自然场景识别相关的云产品 万网 小程序开发制作 视频内容分析 视频集锦 代理记账服务 北京芙蓉天下的公司信息查询