问题一:url中添加callback为key的参数,则访问失败
问题描述
上传文件到OSS(已关联到CDN域名)后获得链接https://images.gdzskj.tech/GbOcSal4L.jpg,链接可以正常访问。
https://images.gdzskj.tech/GbOcSal4L.jpg?callback=1却无法访问
期望结果
https://images.gdzskj.tech/GbOcSal4L.jpg?callback=1可以正常访问
已尝试的方法
...
参考回答:
CDN限制。如果使用了CDN域名,不支持添加callback参数。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/502803
问题二:oss回调参数不是一个正确的json字符串
问题描述
oss由于上传的文件并非是一个图片,所以系统参数高度为空,oss占位符替换为空,但是这就会导致oss回调给服务器的字符串并非是一个json格式的字符串,这块是不是对我们这种第三方接入方不太友好
(ps : 我知道可以在调用的时候判断当前文件是否为图片,来自定义系统参数的返回,直接觉得oss这样返回一个参数不太好)
期望结果
当占位符替换为空时,给一个null或者默认值吧
参考回答:感谢反馈,已将建议转给OSS产品方评估。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/502733
问题三:...对象存储OSS 设置防盗链以后 使用流方式下载文件报错
问题描述
...对象存储OSS 设置防盗链以后 使用流方式下载文件报错
期望结果
...在设置防盗链后,正常下载,返回流
已尝试的方法
...使用示例代码进行下载,报错key不存在 但是可以使用key上传
参考回答:
测试开启防盗链后,可以流式下载。建议使用帮助中心代码示例测试:https://help.aliyun.com/document_detail/84823.html
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/502690
问题四:OSS文件下载中CRC64校验的问题
问题描述
通过链接,下载OSS上的APK文件,响应header中返回的【x-oss-hash-crc64ecma】值为【13003555719276992409】,如图:
但是通过【https://github.com/aliyun/aliyun-oss-android-sdk/blob/master/oss-android-sdk/src/androidTest/java/com/alibaba/sdk/android/CRC64Test.java?spm=a2c4g.11186623.0.0.15203af0OMK83s&file=CRC64Test.java】中的【CRC64.java】计算出的apk文件的CRC为 ,这……??
是我使用错误还是?
使用形式:
【CRC64Check】即为SDK中的【CRC64.java】
参考回答:
13003555719276992409 转十六进制b475e907e8811800,转Long类型 -5443188354432559104,和结果部分差异
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/502680
问题五:OSS put请求出现403 SignatureDoesNotMatch
问题描述
使用python和shell访问(使用put)已经sign过的OSS URL(时间1年,并未过期),使用两种访问方式:
python的requests
直接将其转化为curl命令,并运行
import curlify import requests data = 'some data str...' url = 'http://bkmk.oss-ap-northeast-1.aliyuncs.com/71379ec0-7868-11ed-b9fa-55cace6d1414?OSSAccessKeyId=LTAI5tPynodLHeacT1J5SmWh&Expires=1702198548&Signature=MKHdVH4JMFq9QCL4ZU6yftwUaXc%3D' rep = requests.put(url, data=data) print(rep.content) ret1 = curlify.to_curl(rep.request) print(ret1) p = os.system(ret1)
获得的日志如下:
(flask) sy@mofs:/mnt/data2/sy/Desktop/sense/bakamaka-old/tests$ python test.py b'' curl -X PUT -H 'Accept: */*' -H 'Accept-Encoding: gzip, deflate' -H 'Connection: keep-alive' -H 'Content-Length: 16' -H 'User-Agent: python-requests/2.25.0' -d 'some data str...' 'http://bkmk.oss-ap-northeast-1.aliyuncs.com/71379ec0-7868-11ed-b9fa-55cace6d1414?OSSAccessKeyId=LTAI5tPynodLHeacT1J5SmWh&Expires=1702198548&Signature=MKHdVH4JMFq9QCL4ZU6yftwUaXc%3D' <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>SignatureDoesNotMatch</Code> <Message>The request signature we calculated does not match the signature you provided. Check your key and signing method.</Message> <RequestId>63944A2113AFD031301E17C1</RequestId> <HostId>bkmk.oss-ap-northeast-1.aliyuncs.com</HostId> <OSSAccessKeyId>LTAI5tPynodLHeacT1J5SmWh</OSSAccessKeyId> <SignatureProvided>MKHdVH4JMFq9QCL4ZU6yftwUaXc=</SignatureProvided> <StringToSign>PUT application/x-www-form-urlencoded 1702198548 /bkmk/71379ec0-7868-11ed-b9fa-55cace6d1414</StringToSign> <StringToSignBytes>50 55 54 0A 0A 61 70 70 6C 69 63 61 74 69 6F 6E 2F 78 2D 77 77 77 2D 66 6F 72 6D 2D 75 72 6C 65 6E 63 6F 64 65 64 0A 31 37 30 32 31 39 38 35 34 38 0A 2F 62 6B 6D 6B 2F 37 31 33 37 39 65 63 30 2D 37 38 36 38 2D 31 31 65 64 2D 62 39 66 61 2D 35 35 63 61 63 65 36 64 31 34 31 34 </StringToSignBytes> </Error> None
同时也尝试了postman和$.ajax使用put请求,发现都会返回403 SignatureDoesNotMatch
期望结果
curl, postman, $ajax访问都不会报错403
参考回答:
你好,你的签名URL访问会报403错误SignatureDoesNotMatch,请按照以下步骤排查签名方式并重新生成签名URL:
- 请检查Endpoint前面没有Bucket,后面没有多余的“/”,前后没有多余的空格。
- 比如下面的Endpoint是不合法的。
- http:// oss-cn-hangzhou.aliyuncs.com
- https:// oss-cn-hangzhou.aliyuncs.com
- http://my-bucket.oss-cn-hangzhou.aliyuncs.com
- http://oss-cn-hangzhou.aliyuncs.com/
- 合法的Endpoint如下。
- 请确认AccessKeyID与AccessKeySecret正确,确保AccessKeyID与AccessKeySecret前后都没有空格,特别是使用了复制粘贴的情况。
- 请确保BucketName与ObjectKey命名合法有效且符合要求。
- Bucket命名规范:只能包括小写字母、数字和短横线(-),必须以小写字母或者数字开头,长度必须在3-63字节之间。
- Object的命名规范:使用UTF-8编码,长度必须在1-1023字节之间,不能以“/”或者“\”字符开头。
- 如果是您自己实现的签名,请使用OSS SDK提供的签名方法。OSS的SDK提供了URL/Header签名的实现,详细请参看授权访问。
- 如果您的环境不适合使用SDK,需要自己实现签名,签名方法请参考发起请求概述,仔细检查每个签名字段。
- 如果您使用了代理,请检查代理服务器是否添加额外的Header。
更多信息,请参见OSS权限相关常见错误的排查方法。
关于本问题的更多回答可点击原文查看:https://developer.aliyun.com/ask/502575