游客2cuqxqhew43ho_个人页

个人头像照片 游客2cuqxqhew43ho
0
1
0

个人介绍

暂无个人介绍

擅长的技术

获得更多能力
通用技术能力:

暂时未有相关通用技术能力~

云产品技术能力:

暂时未有相关云产品技术能力~

阿里云技能认证

详细说明
暂无更多信息
正在加载, 请稍后...
暂无更多信息
  • 回答了问题 2018-06-07

    客户端签名直传

    详细解答可以参考官方帮助文档 本示例讲解如何在客户端通过JavaScript代码完成签名,然后通过表单直传数据到OSS。 Demo PC浏览器测试样例 本示例采用Plupload 直接提交表单数据(即PostObject)到OSS,可以运行在PC浏览器、手机浏览器、微信等。您可以同时选择多个文件上传,并设置上传到指定目录和设置上传文件名字是随机文件名还是本地文件名。您还可以通过进度条查看上传进度。 说明 文件上传到一个测试的公共Bucket,会定时清理,所以不要传一些敏感及重要数据。 步骤 1:下载并安装Plugload Plupload是一款简单易用且功能强大的文件上传工具, 支持多种上传方式,包括html5、flash、silverlight,、html4。它会智能检测当前环境,选择最适合的上传方式,并且会优先采用Html5方式。请参见Plupload官网进行下载和安装。 步骤 2:下载应用服务器代码 下载地址 步骤 3:修改配置文件 将下载包解压后,修改upload.js文件: accessid= ''; accesskey= $id:您的AccessKeyId $key:您的AessKeySecret $host:格式为BucketName.Endpoint,例如post-test.oss-cn-hangzhou.aliyuncs.com 说明 关于Endpoint的介绍,请参见Endpoint(访问域名)。 步骤 4:设置CORS HTML表单直接上传到OSS会产生跨域请求。为了浏览安全,需要为Bucket设置跨域规则(CORS),支持Post方法。 具体操作步骤请参见设置跨域访问。设置如下图所示: 说明 在低版本IE浏览器,Plupload会以flash方式执行。您需要设置crossdomain.xml ,设置方法请参见OSS Web直传—使用Flash上传。 步骤 5:体验JavaScript客户端签名直传 将应用服务器代码zip包解压到Web根目录下。 在Web浏览器中输入/oss-h5-upload-js-direct/index.html,例如http://abc.com:8080/oss-h5-upload-js-direct/index.html。 选择一个或多个文件进行上传。 上传成功后,通过控制台查看上传结果。 核心代码解析 因为OSS支持POST协议,所以只要在Plupload发送POST请求时带上OSS签名即可。核心代码如下: var uploader = new plupload.Uploader({ runtimes : 'html5,flash,silverlight,html4', browse_button : 'selectfiles', //runtimes : 'flash', container: document.getElementById('container'), flash_swf_url : 'lib/plupload-2.1.2/js/Moxie.swf', silverlight_xap_url : 'lib/plupload-2.1.2/js/Moxie.xap', url : host, multipart_params: { 'Filename': '${filename}', 'key' : '${filename}', 'policy': policyBase64, 'OSSAccessKeyId': accessid, 'success_action_status' : '200', //让服务端返回200,不设置则默认返回204 'signature': signature, },  .... } 上述代码中,’Filename’: ‘${filename}’表示上传后保持原来的文件名。如果您想上传到特定目录如abc下,且文件名不变,请修改代码如下: multipart_params: { 'Filename': 'abc/' + '${filename}', 'key' : '${filename}', 'policy': policyBase64, 'OSSAccessKeyId': accessid, 'success_action_status' : '200', //让服务端返回200,不设置则默认返回204 'signature': signature, }, 设置成随机文件名 如果想在上传时固定设置成随机文件名,后缀保持跟客户端文件一致,可以将函数改为:function check_object_radio() { g_object_name_type = 'random_name'; } 设置成用户的文件名 如果想在上传时固定设置成用户的文件名,可以将函数改为:function check_object_radio() { g_object_name_type = 'local_name'; } 设置上传目录 您可以将文件上传到指定目录下。下面的代码是将上传目录改成abc/,注意目录必须以正斜线(/)结尾。function get_dirname() { g_dirname = 'abc/'; } 上传签名 上传签名主要是对policyText进行签名,最简单的例子如下:var policyText = { 'expiration': '2020-01-01T12:00:00.000Z', // 设置Policy的失效时间,如果超过失效时间,就无法通过此Policy上传文件 'conditions': [ ['content-length-range', 0, 1048576000] // 设置上传文件的大小限制,如果超过限制,文件上传到OSS会报错 ] } 总结 在客户端通过JavaScript代码完成签名,无需过多配置,即可实现直传,非常方便。但是客户端通过JavaScript把AccesssKeyID 和AccessKeySecret写在代码里面有泄露的风险,建议采用服务端签名后直传。
    踩1 评论0
  • 回答了问题 2018-03-31

    限制前缀的读写Policy

    详细解答可以参考官方帮助文档 本文基于快速搭建移动应用直传服务中提到的应用服务器,以上海的Bucket app-base-oss 为例,讲解如何配置不同的Policy实现不同的权限控制。 说明 本文提到的Policy是指快速搭建移动应用直传服务提到的config.json中指定的Policy文件内容。 以下讲述的获取STS Token 后对OSS的操作是指为应用服务器指定Policy。从STS获取临时凭证后,应用通过临时凭证访问OSS。 常见Policy 完全授权的Policy 完全授权的Policy表示允许应用可以对OSS进行任何操作。 警告 完全授权的Policy对移动应用来说是不安全的授权,不推荐使用。 { 'Statement': [ { 'Action': [ 'oss:*' ], 'Effect': 'Allow', 'Resource': ['acs:oss:*:*:*'] } ], 'Version': '1' } 获取STS Token 后对OSS的操作 结果 列出所有创建的Bucket 成功 上传不带前缀的Object,test.txt 成功 下载不带前缀的Object,test.txt 成功 上传带前缀的Object,user1/test.txt 成功 下载带前缀的Object,user1/test.txt 成功 列出Object,test.txt 成功 带前缀的Object,user1/test.txt 成功 不限制前缀的只读不写Policy 此Policy表示应用对Bucketapp-base-oss下所有的Object可列举,可下载。 { 'Statement': [ { 'Action': [ 'oss:GetObject', 'oss:ListObjects' ], 'Effect': 'Allow', 'Resource': ['acs:oss:*:*:app-base-oss/*', 'acs:oss:*:*:app-base-oss'] } ], 'Version': '1' } 获取STS Token 后对OSS的操作 结果 列出所有创建的Bucket 失败 上传不带前缀的Object,test.txt 失败 下载不带前缀的Object,test.txt 成功 上传带前缀的Object,user1/test.txt 失败 下载带前缀的Object,user1/test.txt 成功 列出不带前缀的Object,test.txt 成功 列出带前缀的Object,user1/test.txt 成功 限制前缀的只读不写Policy 此Policy表示应用对Bucketapp-base-oss下带有前缀user1/的Object可列举、可下载,但无法下载其他前缀的Object。采用此种Policy,如果不同的应用对应不同的前缀,就可以达到在同一个Bucket中空间隔离的效果。 { 'Statement': [ { 'Action': [ 'oss:GetObject', 'oss:ListObjects' ], 'Effect': 'Allow', 'Resource': ['acs:oss:*:*:app-base-oss/user1/*', 'acs:oss:*:*:app-base-oss'] } ], 'Version': '1' } 获取STS Token 后对OSS的操作 结果 列出所有创建的Bucket 失败 上传不带前缀的Object,test.txt 失败 下载不带前缀的Object,test.txt 失败 上传带前缀的Object,user1/test.txt 失败 下载带前缀的Object,user1/test.txt 成功 列出Object,test.txt 成功 带前缀的Object,user1/test.txt 成功 不限制前缀的只写不读Policy 此Policy表示应用可以对Bucketapp-base-oss下所有的Object进行上传。 { 'Statement': [ { 'Action': [ 'oss:PutObject' ], 'Effect': 'Allow', 'Resource': ['acs:oss:*:*:app-base-oss/*', 'acs:oss:*:*:app-base-oss'] } ], 'Version': '1' } 获取STS Token 后对OSS操作 结果 列出所有创建的Bucket 失败 上传不带前缀的Object,test.txt 成功 下载不带前缀的Object,test.txt 失败 上传带前缀的Object,user1/test.txt 成功 下载带前缀的Object,user1/test.txt 成功 列出Object,test.txt 成功 带前缀的Object,user1/test.txt 成功 限制前缀的只写不读Policy 此Policy表示应用可以对Bucketapp-base-oss下带有前缀user1/的Object进行上传。但无法上传其他前缀的Object。采用此种Policy,如果不同的应用对应不同的前缀,就可以达到在同一个Bucket中空间隔离的效果。 { 'Statement': [ { 'Action': [ 'oss:PutObject' ], 'Effect': 'Allow', 'Resource': ['acs:oss:*:*:app-base-oss/user1/*', 'acs:oss:*:*:app-base-oss'] } ], 'Version': '1' } 获取STS Token 后对OSS的操作 结果 列出所有创建的Bucket 失败 上传不带前缀的Object,test.txt 失败 下载不带前缀的Object,test.txt 失败 上传带前缀的Object,user1/test.txt 失败 下载带前缀的Object,user1/test.txt 成功 列出Object,test.txt 失败 带前缀的Object,user1/test.txt 失败 不限制前缀的读写Policy 此Policy表示应用可以对Bucketapp-base-oss下所有的Object进行列举、下载、上传和删除。 { 'Statement': [ { 'Action': [ 'oss:GetObject', 'oss:PutObject', 'oss:DeleteObject', 'oss:ListParts', 'oss:AbortMultipartUpload', 'oss:ListObjects' ], 'Effect': 'Allow', 'Resource': ['acs:oss:*:*:app-base-oss/*', 'acs:oss:*:*:app-base-oss'] } ], 'Version': '1' } 获取STS Token 后对OSS的操作 结果 列出所有创建的Bucket 失败 上传不带前缀的Object,test.txt 成功 下载不带前缀的Object,test.txt 成功 上传带前缀的Object,user1/test.txt 成功 下载带前缀的Object,user1/test.txt 成功 列出Object,test.txt 成功 带前缀的Object,user1/test.txt 成功 限制前缀的读写Policy 此Policy表示应用可以对Bucketapp-base-oss下带有前缀user1/的Object进行列举、下载、上传和删除,但无法对其他前缀的Object进行读写。采用此种Policy,如果不同的应用对应不同的前缀,就可以达到在同一个Bucket中空间隔离的效果。 { 'Statement': [ { 'Action': [ 'oss:GetObject', 'oss:PutObject', 'oss:DeleteObject', 'oss:ListParts', 'oss:AbortMultipartUpload', 'oss:ListObjects' ], 'Effect': 'Allow', 'Resource': ['acs:oss:*:*:app-base-oss/user1/*', 'acs:oss:*:*:app-base-oss'] } ], 'Version': '1' } 获取STS Token 后对OSS的操作 结果 列出所有创建的Bucket 失败 上传不带前缀的Object,test.txt 失败 下载不带前缀的Object,test.txt 失败 上传带前缀的Object,user1/test.txt 成功 下载带前缀的Object,user1/test.txt 成功 列出Object,test.txt 成功 带前缀的Object,user1/test.txt 成功 总结 从上面的例子可以看出: 可以根据不同的应用场景制定不同的Policy,然后对应用服务器稍作修改就可以实现对不用的应用用户实现不同的权限控制。 可以在应用端做优化,使得STS Token过期之前不需要向应用服务器再次请求。 Token由STS颁发。应用服务器只是定制了Policy,向STS请求Token,然后将Token转发给应用。这里的Token包含了AccessKeyId、AccessKeySecret、Expiration、SecurityToken,这些参数在OSS提供给应用的SDK中会用到。详情请参见各语言SDK参考中的授权访问章节。 参考文档 RAM和STS在OSS中的使用指南 阿里云RAM官方文档 阿里云STS官方文档
    踩1 评论0
  • 回答了问题 2018-03-22

    访问网站变成Internal Server Error 500 现在上传Discuz程序

    详细解答可以参考官方帮助文档    问题描述:虚拟主机网站报错  “HTTP 错误 500.19 - Internal Server Error”,  如下图:     登陆控制面板调整对应asp.net版本即可。     调整后测试访问正常,如下图:       如问题还未解决,请联系售后技术支持          
    踩1 评论0
  • 提交了问题 2018-01-27

    域名如何设置解析

  • 回答了问题 2018-01-10

    读写分离的应用场景

    详细解答可以参考官方帮助文档 阿里云数据库RDS for MySQL可以添加只读实例,分担主实例的读取压力。主实例和只读实例都有独立的连接地址,当您开启读写分离功能后,系统会额外提供一个读写分离地址,联动主实例及其下的所有只读实例,实现了自动的读写分离。应用程序只需连接同一个读写分离地址进行数据读取及写入操作,读写分离模块会自动将写入请求发往主实例,而将读取请求按照设置的权重发往各个只读实例。您只需增加只读实例的个数,即可不断扩展系统的处理能力,应用程序无需做任何修改。如下图所示: 操作指导 创建只读实例 开通读写分离
    踩1 评论0
  • 提交了问题 2018-01-02

    禁止这个ip访问我的网站

  • 提交了问题 2017-12-20

    打开主页也不提示404

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息