• 关于

    D编码未响应

    的搜索结果

回答

问题原因 1、验签支付宝公钥有误。 2、验签报文存在问题。 3、验签代码方法有误并且未返回成功数据给支付宝。 解决方案 1、验签支付宝公钥有误 检查自己配置的验签使用的公钥(alipay_public_key)是否配置支付宝公钥,验签是使用支付宝公钥,如果使用工具生成的应用公钥进行验签会出现验签失败。 注:如是公钥证书方式,就需要传递支付宝公钥证书文件进行验签操作,如何获取支付宝公钥可点击【查看】。 2、验签报文存在问题 核实接收的验签报文是否完整,是否存在乱码,如果存在乱码,检查自己编码格式,通知的内容示例如下。 REQUEST URL: http://example.com/gateway.do(应用网关地址) REQUEST METHOD: POST(通知是请求方式) CONTENT:(以下为发送到应用网关上的内容) service=alipay.service.check sign=ntjOmXFGJMdfdMnrTL5rEp9QG8d0lDEoGg3ZHvqemHeI8BlQoEsFbhEn0IfQT+pvfJz5RCuE+3Qh1X7I4z5iTIiGjDBstc0xeuiAmtP9TrJZuw2jUAODFB9qOwBJLNcWlKHUGTU/db/qRsJQCj8EjoJvSi9MRM/xKv/XmduS/C4= sign_type=RSA2 charset=GBK biz_content= 注:通知数据默认是以GBK编码格式发送的,无法做修改,所以接收数据时需要以GBK编码格式去做接收,其他更多内容说明可点击【查看】。 3、验签代码方法有误并且未返回成功数据给支付宝 先确认是生活号应用上配置密钥时是选择公钥证书方式还是普通公钥方式: (1)如普通公钥方式,验签代码可参考【签名验签方法】内的生活号响应返回的数据验签说明。 (2)如公钥证书方式,验签代码可参考【公钥证书签名验签方法】内的生活号响应返回的数据验签说明。 注1:验签成功后还需要给支付宝返回相关的数据内容信息,并且普通公钥方式和公钥证书方式返回的内容信息还存在差异,详细可参考【激活开发者说明文档】内的返回验签成功消息说明。 注2:相关的生活号demo下载地址可点击【生活号demo下载】。

保持可爱mmm 2020-05-07 11:12:22 0 浏览量 回答数 0

问题

如何使用API

云栖大讲堂 2019-12-01 21:04:08 1458 浏览量 回答数 0

回答

通常,字符äåö没问题,因为浏览器和Web应用程序的tomcat / java使用的默认字符集为latin1即。“理解”这些字符的ISO-8859-1。 要使UTF-8在Java + Tomcat + Linux / Windows + Mysql下工作,需要满足以下条件: 配置Tomcat的server.xml 必须配置连接器使用UTF-8编码url(GET请求)参数: 在上面的示例中,关键部分是URIEncoding =“ UTF-8”。这可以保证Tomcat将所有传入的GET参数处理为UTF-8编码。结果,当用户将以下内容写入浏览器的地址栏时: https://localhost:8443/ID/Users?action=search&name=ж 字符ж被当作UTF-8处理,并被编码为%D0%B6(通常在到达服务器之前由浏览器访问)。 POST请求不受此影响。 CharsetFilter 然后是时候强制Java Web应用程序以UTF-8编码方式处理所有请求和响应了。这要求我们定义一个字符集过滤器,如下所示: package fi.foo.filters; import javax.servlet.*; import java.io.IOException; public class CharsetFilter implements Filter { private String encoding; public void init(FilterConfig config) throws ServletException { encoding = config.getInitParameter("requestEncoding"); if (encoding == null) encoding = "UTF-8"; } public void doFilter(ServletRequest request, ServletResponse response, FilterChain next) throws IOException, ServletException { // Respect the client-specified character encoding // (see HTTP specification section 3.4.1) if (null == request.getCharacterEncoding()) { request.setCharacterEncoding(encoding); } // Set the default response content type and encoding response.setContentType("text/html; charset=UTF-8"); response.setCharacterEncoding("UTF-8"); next.doFilter(request, response); } public void destroy() { } } 此过滤器可确保如果浏览器未设置请求中使用的编码,则将其设置为UTF-8。 该过滤器完成的另一件事是设置默认响应编码,即。返回的html /所使用的编码。另一种方法是在应用程序的每个控制器中设置响应编码等。 该过滤器必须添加到web.xml或webapp的部署描述符中: CharsetFilter fi.foo.filters.CharsetFilter requestEncoding UTF-8 CharsetFilter /* 可以在tomcat Wiki(http://wiki.apache.org/tomcat/Tomcat/UTF-8)中找到有关创建此过滤器的说明。 JSP页面编码 在您的web.xml中,添加以下内容: *.jsp UTF-8 另外,Web应用程序的所有JSP页面都需要在其顶部具有以下内容: <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%> 如果使用具有不同JSP片段的某种布局,则所有这些都需要。 HTML元标记 JSP页面编码告诉JVM以正确的编码处理JSP页面中的字符。然后是时候告诉浏览器html页面的编码方式了: 这是通过在webapp生成的每个xhtml页面顶部执行以下操作来完成的: ... JDBC连接 使用数据库时,必须定义该连接使用UTF-8编码。可以在context.xml或以下定义了JDBC连接的地方完成: MySQL数据库和表 使用的数据库必须使用UTF-8编码。这是通过使用以下内容创建数据库来实现的: CREATE DATABASE `ID_development` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_swedish_ci */; 然后,所有表也都必须使用UTF-8: CREATE TABLE `Users` ( `id` int(10) unsigned NOT NULL auto_increment, `name` varchar(30) collate utf8_swedish_ci default NULL PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_swedish_ci ROW_FORMAT=DYNAMIC; 关键部分是CHARSET = utf8。 MySQL服务器配置 还必须配置MySQL serveri。通常,这是在Windows中通过修改my.ini -file和在Linux中通过配置my.cnf -file来完成的。在这些文件中,应该定义所有连接到服务器的客户端都使用utf8作为默认字符集,并且服务器使用的默认字符集也是utf8。 [client] port=3306 default-character-set=utf8 [mysql] default-character-set=utf8 MySQL的程序和功能 这些还需要定义字符集。例如: DELIMITER $$ DROP FUNCTION IF EXISTS `pathToNode` $$ CREATE FUNCTION `pathToNode` (ryhma_id INT) RETURNS TEXT CHARACTER SET utf8 READS SQL DATA BEGIN DECLARE path VARCHAR(255) CHARACTER SET utf8; SET path = NULL; ... RETURN path; END $$ DELIMITER ; GET请求:latin1和UTF-8 如果并且在tomcat的server.xml中定义了GET请求参数以UTF-8编码时,以下GET请求将得到正确处理: https://localhost:8443/ID/Users?action=search&name=Petteri https://localhost:8443/ID/Users?action=search&name=ж 由于latin1和UTF-8均以相同的方式编码ASCII字符,因此正确处理了字符串“ Petteri”。 拉丁语1完全不了解西里尔字母ж。由于指示Tomcat将请求参数处理为UTF-8,因此它将该字符正确编码为%D0%B6。 如果并且当指示浏览器读取UTF-8编码的页面(带有请求标头和html meta-tag)时,至少Firefox 2/3和此期间的其他浏览器都将字符本身编码为%D0%B6。 最终结果是,找到了所有名称为“ Petteri”的用户,还找到了所有名称为“ж”的用户。 但是äåö呢? HTTP规范定义默认情况下,URL编码为latin1。这导致firefox2,firefox3等对以下内容进行编码 https://localhost:8443/ID/Users?action=search&name=*Päivi* 进入编码版本 https://localhost:8443/ID/Users?action=search&name=*P%E4ivi* 在latin1中,字符ä编码为%E4。即使页面/请求/所有内容都定义为使用UTF-8。ä的UTF-8编码版本为%C3%A4 结果是,由于某些字符在latin1中编码,而另一些字符在UTF-8中编码,因此webapp完全不可能正确地处理GET请求中的请求参数。 注意:如果页面被定义为UTF-8,则POST请求确实可以工作,因为浏览器完全以UTF-8格式编码来自表单的所有请求参数。 读物 非常感谢以下作者为我的问题提供了答案: http://tagunov.tripod.com/i18n/i18n.html http://wiki.apache.org/tomcat/Tomcat/UTF-8 http://java.sun.com/developer/technicalArticles/Intl/HTTPCharset/ http://dev.mysql.com/doc/refman/5.0/en/charset-syntax.html http://cagan327.blogspot.com/2006/05/utf-8-encoding-fix-tomcat-jsp-etc.html http://cagan327.blogspot.com/2006/05/utf-8-encoding-fix-for-mysql-tomcat.html http://jeppesn.dk/utf-8.html http://www.nabble.com/request-parameters-mishandle-utf-8-encoding-td18720039.html http://www.utoronto.ca/webdocs/HTMLdocs/NewHTML/iso_table.html http://www.utf8-chartable.de/ 重要的提示 mysql支持使用3字节UTF-8字符的基本多语言平面。如果您需要超出此范围(某些字母需要超过3个字节的UTF-8字节),则需要使用一种VARBINARY列类型的样式或使用utf8mb4字符集(这需要MySQL 5.5.3或更高版本)。请注意,使用utf8MySQL中的字符集无法100%地工作。 Tomcat与Apache 还有一件事,如果您使用的是Apache + Tomcat + mod_JK连接器,则还需要进行以下更改: 将URIEncoding =“ UTF-8”添加到8009连接器的tomcat server.xml文件中,由mod_JK连接器使用。 转到你的apache文件夹即/etc/httpd/conf添加AddDefaultCharset utf-8在httpd.conf file。注意:首先检查它是否存在。如果存在,您可以使用此行对其进行更新。您也可以在底部添加此行。来源:stack overflow

保持可爱mmm 2020-05-10 17:04:59 0 浏览量 回答数 0

万券齐发助力企业上云,爆款产品低至2.2折起!

限量神券最高减1000,抢完即止!云服务器ECS新用户首购低至0.95折!

回答

详细解答可以参考官方帮助文档 CopyObject接口用于拷贝一个在OSS上已经存在的object成另外一个object。 该接口可以发送一个PUT请求给OSS,并在PUT请求头中添加元素x-oss-copy-source来指定拷贝源。OSS会自动判断出这是一个Copy操作,并直接在服务器端执行该操作。如果拷贝成功,则返回新的object信息给用户。 该操作适用于拷贝小于1GB的文件,当拷贝一个大于1GB的文件时,必须使用Multipart Upload操作,具体见Upload Part Copy。 Copy操作的源Bucket和目标Bucket必须是同一个Region,不同Region的Bucket不能执行Copy Object操作。 请求语法 PUT /DestObjectName HTTP/1.1 Host: DestBucketName.oss-cn-hangzhou.aliyuncs.com Date: GMT Date Authorization: SignatureValue x-oss-copy-source: /SourceBucketName/SourceObjectName 请求Header 名称 类型 描述 x-oss-copy-source 字符串 复制源地址(必须有可读权限) 默认值:无 x-oss-copy-source-if-match 字符串 如果源Object的ETag值和用户提供的ETag相等,则执行拷贝操作,并返回200;否则返回412 HTTP错误码(预处理失败)。 默认值:无 x-oss-copy-source-if-none-match 字符串 如果源Object的ETag值和用户提供的ETag不相等,则执行拷贝操作,并返回200;否则返回304 HTTP错误码(预处理失败)。 默认值:无 x-oss-copy-source-if-unmodified-since 字符串 如果传入参数中的时间等于或者晚于文件实际修改时间,则正常传输文件,并返回200 OK;否则返回412 precondition failed错误。 默认值:无 x-oss-copy-source-if-modified-since 字符串 如果源Object自从用户指定的时间以后被修改过,则执行拷贝操作;否则返回304 HTTP错误码(预处理失败)。 默认值:无 x-oss-metadata-directive 字符串 有效值为COPY和REPLACE。如果该值设为COPY,则新的Object的meta都从源Object复制过来;如果设为REPLACE,则忽视所有源Object的meta值,而采用用户这次请求中指定的meta值;其他值则返回400 HTTP错误码。注意该值为COPY时,源Object的x-oss-server-side-encryption的meta值不会进行拷贝。 取值: COPY (默认值) REPLACE x-oss-server-side-encryption 字符串 指定oss创建目标object时的服务器端熵编码加密算法 取值:AES256 或 KMS 说明 您需要购买KMS套件,才可以使用KMS加密算法,否则会报KmsServiceNotEnabled错误码。 x-oss-object-acl 字符串 指定oss创建object时的访问权限。 取值:public-read,private,public-read-write 响应元素(Response Elements) 表 1. 响应元素 名称 类型 描述 CopyObjectResult 字符串 Copy Object的结果。 默认值:无 ETag 字符串 新Object的ETag值。 父元素:CopyObjectResult LastModified 字符串 新Object最后更新时间。 父元素:CopyObjectResult 细节分析 可以通过拷贝操作来实现修改已有Object的meta信息。 如果拷贝操作的源Object地址和目标Object地址相同,则无论x-oss-metadata-directive为何值,都会直接替换源Object的meta信息。 OSS支持拷贝操作的四个预判断Header任意个同时出现,相应逻辑参见Get Object操作的细节分析。 拷贝操作需要请求者对源Object有读权限。 源Object和目标Object必须属于同一个数据中心,否则返回403 AccessDenied,错误信息为:Target object does not reside in the same data center as source object。 拷贝操作的计费统计会对源Object所在的Bucket增加一次Get请求次数,并对目标Object所在的Bucket增加一次Put请求次数,以及相应的新增存储空间。 拷贝操作涉及到的请求头,都是以“x-oss-”开头的,所以要加入签名字符串中。 若在拷贝操作中指定了x-oss-server-side-encryption请求头,并且请求值合法(为AES256),则无论源Object是否进行过服务器端加密编码,拷贝之后的目标Object都会进行服务器端加密编码。并且拷贝操作的响应头中会包含x-oss-server-side-encryption,值被设置成目标Object的加密算法。在这个目标Object被下载时,响应头中也会包含x-oss-server-side-encryption,值被设置成该Object的加密算法;若拷贝操作中未指定x-oss-server-side-encryption请求头,则无论源Object是否进行过服务器端加密编码,拷贝之后的目标Object都是未进行过服务器端加密编码加密的数据。 拷贝操作中x-oss-metadata-directive请求头为COPY(默认值)时,并不拷贝源Object的x-oss-server-side-encryption值,即目标Object是否进行服务器端加密编码只根据COPY操作是否指定了x-oss-server-side-encryption请求头来决定。 若在拷贝操作中指定了x-oss-server-side-encryption请求头,并且请求值非AES256,则返回400和相应的错误提示:InvalidEncryptionAlgorithmError。 如果拷贝的文件大小大于1GB,会返回400和错误提示:EntityTooLarge。 该操作不能拷贝通过Append追加上传方式产生的object。 如果文件类型为符号链接,只拷贝符号链接。 示例 请求示例: PUT /copy_oss.jpg HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Date: Fri, 24 Feb 2012 07:18:48 GMT x-oss-copy-source: /oss-example/oss.jpg Authorization: OSS qn6qrrqxo2oawuk53otfjbyc:gmnwPKuu20LQEjd+iPkL259A+n0= 返回示例: HTTP/1.1 200 OK x-oss-request-id: 559CC9BDC755F95A64485981 Content-Type: application/xml Content-Length: 193 Connection: keep-alive Date: Fri, 24 Feb 2012 07:18:48 GMT Server: AliyunOSS <?xml version="1.0" encoding="UTF-8"?> <CopyObjectResult xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <LastModified>Fri, 24 Feb 2012 07:18:48 GMT</LastModified> <ETag>"5B3C1A2E053D763E1B002CC607C5A0FE"</ETag> </CopyObjectResult>

2019-12-01 23:13:50 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 PostObject使用HTML表单上传文件到指定bucket。 Post作为Put的替代品,使得基于浏览器上传文件到bucket成为可能。Post Object的消息实体通过多重表单格式(multipart/form-data)编码,在Put Object操作中参数通过HTTP请求头传递,在Post操作中参数则作为消息实体中的表单域传递。 Post object 请求语法 POST / HTTP/1.1 Host: BucketName.oss-cn-hangzhou.aliyuncs.com User-Agent: browser_data Content-Length:ContentLength Content-Type: multipart/form-data; boundary=9431149156168 --9431149156168 Content-Disposition: form-data; name="key" key --9431149156168 Content-Disposition: form-data; name="success_action_redirect" success_redirect --9431149156168 Content-Disposition: form-data; name="Content-Disposition" attachment;filename=oss_download.jpg --9431149156168 Content-Disposition: form-data; name="x-oss-meta-uuid" myuuid --9431149156168 Content-Disposition: form-data; name="x-oss-meta-tag" mytag --9431149156168 Content-Disposition: form-data; name="OSSAccessKeyId" access-key-id --9431149156168 Content-Disposition: form-data; name="policy" encoded_policy --9431149156168 Content-Disposition: form-data; name="Signature" signature --9431149156168 Content-Disposition: form-data; name="file"; filename="MyFilename.jpg" Content-Type: image/jpeg file_content --9431149156168 Content-Disposition: form-data; name="submit" Upload to OSS --9431149156168-- 表单域 名称 类型 描述 必须 OSSAccessKeyId 字符串 Bucket 拥有者的Access Key Id。 默认值:无 限制:当bucket非public-read-write或者提供了policy(或Signature)表单域时,必须提供该表单域。 有条件的 policy 字符串 policy规定了请求的表单域的合法性。不包含policy表单域的请求被认为是匿名请求,并且只能访问public-read-write的bucket。更详细描述请参考下文 Post Policy。 默认值:无 限制:当bucket非public-read-write或者提供了OSSAccessKeyId(或Signature)表单域时,必须提供该表单域。 有条件的 Signature 字符串 根据Access Key Secret和policy计算的签名信息,OSS验证该签名信息从而验证该Post请求的合法性。更详细描述请参考下文 Post Signature。 默认值:无 限制:当bucket非public-read-write或者提供了OSSAccessKeyId(或policy)表单域时,必须提供该表单域。 有条件的 Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires 字符串 REST请求头,更多的信息见Put Object。 默认值:无 可选 file 字符串 文件或文本内容,必须是表单中的最后一个域。浏览器会自动根据文件类型来设置Content-Type,会覆盖用户的设置。 OSS一次只能上传一个文件。 默认值:无 必须 key 字符串 上传文件的object名称。 如果名称包含路径,如a/b/c/b.jpg, 则OSS会自动创建相应的文件夹。 默认值:无 必须 success_action_redirect 字符串 上传成功后客户端跳转到的URL,如果未指定该表单域,返回结果由success_action_status表单域指定。如果上传失败,OSS返回错误码,并不进行跳转。 默认值:无 可选 success_action_status 字符串 未指定success_action_redirect表单域时,该表单域指定了上传成功后返回给客户端的状态码。 接受值为200, 201, 204(默认)。 如果该域的值为200或者204,OSS返回一个空文档和相应的状态码。 如果该域的值设置为201,OSS返回一个XML文件和201状态码。 如果其值未设置或者设置成一个非法值,OSS返回一个空文档和204状态码。 默认值:无 x-oss-meta-* 字符串 用户指定的user meta值。 OSS不会检查或者使用该值。 默认值:无 可选 x-oss-server-side-encryption 字符串 指定OSS创建object时的服务器端加密编码算法。 合法值:AES256 可选 x-oss-object-acl 字符串 指定oss创建object时的访问权限。 合法值:public-read,private,public-read-write 可选 x-oss-security-token 字符串 若本次访问是使用STS临时授权方式,则需要指定该项为SecurityToken的值,同时OSSAccessKeyId需要使用与之配对的临时AccessKeyId,计算签名时,与使用普通AccessKeyId签名方式一致。 默认值:无 可选 响应Header 名称 类型 描述 x-oss-server-side-encryption 字符串 如果请求指定了x-oss-server-side-encryption熵编码,则响应Header中包含了该头部,指明了所使用的加密算法。 响应元素(Response Elements) 名称 类型 描述 PostResponse 容器 保持Post请求结果的容器。 子节点:Bucket, ETag, Key, Location Bucket 字符串 Bucket名称。 父节点:PostResponse ETag 字符串 ETag (entity tag) 在每个Object生成的时候被创建,Post请求创建的Object,ETag值是该Object内容的uuid,可以用于检查该Object内容是否发生变化。 父节点:PostResponse Location 字符串 新创建Object的URL。 父节点:PostResponse 细节分析 进行Post操作要求对bucket有写权限,如果bucket为public-read-write,可以不上传签名信息,否则要求对该操作进行签名验证。与Put操作不同,Post操作使用AccessKeySecret对policy进行签名计算出签名字符串作为Signature表单域的值,OSS会验证该值从而判断签名的合法性。 无论bucket是否为public-read-write,一旦上传OSSAccessKeyId, policy, Signature表单域中的任意一个,则另两个表单域为必选项,缺失时OSS会返回错误码:InvalidArgument。 post操作提交表单编码必须为“multipart/form-data”,即header中Content-Type为multipart/form-data;boundary=xxxxxx 这样的形式,boundary为边界字符串。 提交表单的URL为bucket域名即可,不需要在URL中指定object。即请求行是POST / HTTP/1.1,不能写成POST /ObjectName HTTP/1.1。 policy规定了该次Post请求中表单域的合法值,OSS会根据policy判断请求的合法性,如果不合法会返回错误码:AccessDenied。在检查policy合法性时,policy中不涉及的表单域不进行检查。 表单和policy必须使用UTF-8编码,policy为经过UTF-8编码和base64编码的JSON。 Post请求中可以包含额外的表单域,OSS会根据policy对这些表单域检查合法性。 如果用户上传了Content-MD5请求头,OSS会计算body的Content-MD5并检查一致性,如果不一致,将返回InvalidDigest错误码。 如果POST请求中包含Header签名信息或URL签名信息,OSS不会对它们做检查。 如果请求中携带以x-oss-meta-为前缀的表单域,则视为user meta,比如x-oss-meta-location。一个Object可以有多个类似的参数,但所有的user meta总大小不能超过8k。 Post请求的body总长度不允许超过5G。若文件长度过大,会返回错误码:EntityTooLarge。 如果上传指定了x-oss-server-side-encryption Header请求域,则必须设置其值为AES256,否则会返回400和错误码:InvalidEncryptionAlgorithmError。指定该Header后,在响应头中也会返回该Header,OSS会对上传的Object进行加密编码存储,当这个Object被下载时,响应头中会包含x-oss-server-side-encryption,值被设置成该Object的加密算法。 表单域为大小写不敏感的,但是表单域的值为大小写敏感的。 示例 请求示例:POST / HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Length: 344606 Content-Type: multipart/form-data; boundary=9431149156168 --9431149156168 Content-Disposition: form-data; name="key" /user/a/objectName.txt --9431149156168 Content-Disposition: form-data; name="success_action_status" 200 --9431149156168 Content-Disposition: form-data; name="Content-Disposition" content_disposition --9431149156168 Content-Disposition: form-data; name="x-oss-meta-uuid" uuid --9431149156168 Content-Disposition: form-data; name="x-oss-meta-tag" metadata --9431149156168 Content-Disposition: form-data; name="OSSAccessKeyId" 44CF9590006BF252F707 --9431149156168 Content-Disposition: form-data; name="policy" eyJleHBpcmF0aW9uIjoiMjAxMy0xMi0wMVQxMjowMDowMFoiLCJjb25kaXRpb25zIjpbWyJjb250ZW50LWxlbmd0aC1yYW5nZSIsIDAsIDEwNDg1NzYwXSx7ImJ1Y2tldCI6ImFoYWhhIn0sIHsiQSI6ICJhIn0seyJrZXkiOiAiQUJDIn1dfQ== --9431149156168 Content-Disposition: form-data; name="Signature" kZoYNv66bsmc10+dcGKw5x2PRrk= --9431149156168 Content-Disposition: form-data; name="file"; filename="MyFilename.txt" Content-Type: text/plain abcdefg --9431149156168 Content-Disposition: form-data; name="submit" Upload to OSS --9431149156168-- 返回示例:HTTP/1.1 200 OK x-oss-request-id: 61d2042d-1b68-6708-5906-33d81921362e Date: Fri, 24 Feb 2014 06:03:28 GMT ETag: 5B3C1A2E053D763E1B002CC607C5A0FE Connection: keep-alive Content-Length: 0 Server: AliyunOSS Post Policy Post请求的policy表单域用于验证请求的合法性。 policy为一段经过UTF-8和base64编码的JSON文本,声明了Post请求必须满足的条件。虽然对于public-read-write的bucket上传时,post表单域为可选项,我们强烈建议使用该域来限制Post请求。 policy示例 { "expiration": "2014-12-01T12:00:00.000Z", "conditions": [ {"bucket": "johnsmith" }, ["starts-with", "$key", "user/eric/"] ] } Post policy中必须包含expiration和condtions。 Expiration Expiration项指定了policy的过期时间,以ISO8601 GMT时间表示。例如”2014-12-01T12:00:00.000Z”指定了Post请求必须发生在2014年12月1日12点之前。 Conditions Conditions是一个列表,可以用于指定Post请求的表单域的合法值。注意:表单域对应的值在检查policy之后进行扩展,因此,policy中设置的表单域的合法值应当对应于扩展之前的表单域的值。Policy中支持的conditions项见下表: 名称 描述 content-length-range 上传文件的最小和最大允许大小。 该condition支持contion-length-range匹配方式。 Cache-Control, Content-Type, Content-Disposition, Content-Encoding, Expires HTTP请求头。 该condition支持精确匹配和starts-with匹配方式。 key 上传文件的object名称。 该condition支持精确匹配和starts-with匹配方式。 success_action_redirect 上传成功后的跳转URL地址。 该condition支持精确匹配和starts-with匹配方式。 success_action_status 未指定success_action_redirect时,上传成功后的返回状态码。 该condition支持精确匹配和starts-with匹配方式。 x-oss-meta-* 用户指定的user meta。 该condition支持精确匹配和starts-with匹配方式。 如果Post请求中包含其他的表单域,可以将这些额外的表单域加入到policy的conditions中,conditions不涉及的表单域将不会进行合法性检查。 Conditions匹配方式 Conditions匹配方式 描述 精确匹配 表单域的值必须精确匹配conditions中声明的值。如指定key表单域的值必须为a: {“key”: “a”} 同样可以写为: [“eq”, “$key”, “a”] Starts With 表单域的值必须以指定值开始。例如指定key的值必须以/user/user1开始: [“starts-with”, “$key”, “/user/user1”] 指定文件大小 指定所允许上传的文件最大大小和最小大小,例如允许的文件大小为1到10字节: [“content-length-range”, 1, 10] 转义字符 于在 Post policy 中 $ 表示变量,所以如果要描述 $,需要使用转义字符\$。除此之外,JSON 将对一些字符进行转义。下图描述了 Post policy 的 JSON 中需要进行转义的字符。 转义字符 描述 \/ 斜杠 \ 反斜杠 \” 双引号 \$ 美元符 \b 空格 \f 换页 \n 换行 \r 回车 \t 水平制表符 \uxxxx Unicode 字符 Post Signature 对于验证的Post请求,HTML表单中必须包含policy和Signature信息。policy控制请求中那些值是允许的。计算Signature的具体流程为: 创建一个 UTF-8 编码的 policy。 将 policy 进行 base64 编码,其值即为 policy 表单域该填入的值,将该值作为将要签名的字符串。 使用 AccessKeySecret 对要签名的字符串进行签名,签名方法与Head中签名的计算方法相同(将要签名的字符串替换为 policy 即可),请参见在Header中包含签名。 示例 Demo Web 端表单直传 OSS 示例 Demo,请参见JavaScript客户端签名直传。

2019-12-01 23:13:50 0 浏览量 回答数 0

问题

如何使用表格存储的 API

云栖大讲堂 2019-12-01 20:58:54 1796 浏览量 回答数 0

问题

关于MultipartUpload的操作之ListMultipartUploads?

青衫无名 2019-12-01 21:54:38 1526 浏览量 回答数 0

问题

关于Object操作之如何实现CopyObject?

青衫无名 2019-12-01 21:50:01 3315 浏览量 回答数 2

问题

关于Object操作之如何实现PostObject?

青衫无名 2019-12-01 21:50:18 2821 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 当用户访问OSS出现错误时,OSS会返回给用户相应的错误码和错误信息,便于用户定位问题,并做出适当的处理。 OSS的错误响应格式 当用户访问OSS出错时,OSS会返回给用户一个合适的3xx,4xx或者5xx的HTTP状态码;以及一个application/xml格式的消息体。 错误响应的消息体例子: <?xml version="1.0" ?> <Error xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Code> AccessDenied </Code> <Message> Query-string authentication requires the Signature, Expires and OSSAccessKeyId parameters </Message> <RequestId> 1D842BC5425544BB </RequestId> <HostId> oss-cn-hangzhou.aliyuncs.com </HostId> </Error> 所有错误的消息体中都包括以下几个元素: Code:OSS返回给用户的错误码。 Message:OSS给出的详细错误信息。 RequestId:用于唯一标识该次请求的UUID;当你无法解决问题时,可以凭这个RequestId来请求OSS开发工程师的帮助。 HostId:用于标识访问的OSS集群,与用户请求时使用的Host一致。 其他特殊的错误信息元素请参照每个请求的具体介绍。 OSS的错误码 OSS的错误码列表如下: 错误码 描述 HTTP状态码 说明 AccessDenied 拒绝访问 403 原因及排除请参看权限问题及排查 BucketAlreadyExists Bucket已经存在 409 CreateBucket指定的BucketName已经使用,请选择新的BucketName BucketNotEmpty Bucket不为空 409 DeleteBucket前请先删除文件和未完成的分片上传任务 CallbackFailed 上传回调失败 203 原因及排除请参看上传回调错误及排除 EntityTooLarge 实体过大 400 Post请求消息长度超过 5GB,原因及排除请参看PostObject错误及排查 EntityTooSmall 实体过小 400 Post请求消息长度太短,排除请参看PostObject错误及排查 FieldItemTooLong Post请求中表单域过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 FilePartInterity 文件Part已改变 400 读分片数据时发现数据与校验和不符 FilePartNotExist 文件Part不存在 400 CompleteMultipartUpload提交的分片没有上传 FilePartStale 文件Part过时 400 读分片数据时发现数据与长度不符 IncorrectNumberOfFilesInPOSTRequest Post请求中文件个数非法 400 Post请求表单域中只能有一个file域,排除请参看PostObject错误及排查 InvalidArgument 参数格式错误 400 参数格式不符合要求,请对照相应API InvalidAccessKeyId AccessKeyId不存在 403 AccessKeyId无效或过期,排除请参看403错误及排查 InvalidBucketName 无效的Bucket名字 400 Bucket命名规则请参看开发人员指南 InvalidDigest 无效的摘要 400 指定的MD5校验值与文件不符,MD5的计算方法请参见PutObject InvalidEncryptionAlgorithmError 指定的熵编码加密算法错误 400 目前只支持AES256加密算法,详见PutObject InvalidObjectName 无效的Object名字 400 ObjectName命名规则请参看开发人员指南 InvalidPart 无效的Part 400 CompleteMultipartUpload提交的Part无效,PartNumber或ETag错误 InvalidPartOrder 无效的part顺序 400 CompleteMultipartUpload提交的Part需按照PartNumber升序排列 InvalidPolicyDocument 无效的Policy文档 400 Post请求中Policy无效,排除请参看PostObject错误及排查 InvalidTargetBucketForLogging Logging操作中有无效的目标bucket 400 存放Logging的目标bucket不存在,请更换 InternalError OSS内部发生错误 500 请重试 MalformedXML XML格式非法 400 请求中XML非法,请根据具体请求排除DeleteObjects、CompleteMultipartUpload、PutBucketLogging、PutBucketWebsite、PutBucketLifecycle、PutBucketReferer、PutBucketCORS MalformedPOSTRequest Post请求的body格式非法 400 表单域格式非法,排除请参看PostObject错误及排查 MaxPOSTPreDataLengthExceededError Post请求上传文件内容之外的body过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 MethodNotAllowed 不支持的方法 405 以OSS不支持的操作来访问资源 MissingArgument 缺少参数 411 请参看具体的API对照解决 MissingContentLength 缺少内容长度 411 消息即非chunked encoding又没有携带Content-Length NoSuchBucket Bucket不存在 404 NoSuchKey Object不存在 404 NoSuchUpload Multipart Upload ID不存在 404 没有初始化分片上传或者初始化的分片上传过期 NotImplemented 无法处理的方法 400 OSS不支持的操作 ObjectNotAppendable 不是可追加文件 409 OSS有三类文件normal、appendable、multipart,只有appendable类型的文件才能执行AppendObject PositionNotEqualToLength Append的位置和文件长度不相等 409 详见AppendObject PreconditionFailed 预处理错误 412 下载条件不符合,详见GetObject RequestTimeTooSkewed 发起请求的时间和服务器时间超出15分钟 403 排除请参看403错误及排查 RequestTimeout 请求超时 400 请重试 RequestIsNotMultiPartContent Post请求content-type非法 400 排除请参看PostObject错误及排查 DownloadTrafficRateLimitExceeded 下载流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 UploadTrafficRateLimitExceeded 上传流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 SignatureDoesNotMatch 签名错误 403 排除请参看Header中签名、URL中签名 TooManyBuckets Bucket数目超过限制 400 默认上限是 10,有调整需求请提交工单 OSS常见错误及排除 上传回调错误及排除 403错误及排查 PostObject错误及排查 权限问题及排查 跨域资源共享CORS错误及排除 防盗链Referer配置及错误排除 STS常见问题及排查 SDK/Tool常见错误及排除 Java SDK Python SDK C SDK ossfs ossftp OSS不支持的操作 如果试图以OSS不支持的操作来访问某个资源,返回405 Method Not Allowed错误。 错误请求示例: ABC /1.txt HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Date: Thu, 11 Aug 2016 03:53:40 GMT Authorization: signatureValue 返回示例: HTTP/1.1 405 Method Not Allowed Server: AliyunOSS Date: Thu, 11 Aug 2016 03:53:44 GMT Content-Type: application/xml Content-Length: 338 Connection: keep-alive x-oss-request-id: 57ABF6C8BC4D25D86CBA5ADE Allow: GET DELETE HEAD PUT POST OPTIONS <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>MethodNotAllowed</Code> <Message>The specified method is not allowed against this resource.</Message> <RequestId>57ABF6C8BC4D25D86CBA5ADE</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Method>abc</Method> <ResourceType>Bucket</ResourceType> </Error> 说明 如果访问的资源是 /bucket/, ResourceType应该是bucket,如果访问的资源是 /bucket/object,ResourceType应该是object。 OSS操作支持但参数不支持的操作 如果在OSS合法的操作中,添加了OSS不支持的参数(例如在PUT的时候,加入If-Modified-Since参数),OSS会返回400 Bad Request错误 错误请求示例: PUT /abc.zip HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Accept: */* Date: Thu, 11 Aug 2016 01:44:50 GMT If-Modified-Since: Thu, 11 Aug 2016 01:43:51 GMT Content-Length: 363 返回示例: HTTP/1.1 400 Bad Request Server: AliyunOSS Date: Thu, 11 Aug 2016 01:44:54 GMT Content-Type: application/xml Content-Length: 322 Connection: keep-alive x-oss-request-id: 57ABD896CCB80C366955187E x-oss-server-time: 0 <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>NotImplemented</Code> <Message>A header you provided implies functionality that is not implemented.</Message> <RequestId>57ABD896CCB80C366955187E</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Header>If-Modified-Since</Header> </Error>

2019-12-01 23:13:55 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 当用户访问OSS出现错误时,OSS会返回给用户相应的错误码和错误信息,便于用户定位问题,并做出适当的处理。 OSS的错误响应格式 当用户访问OSS出错时,OSS会返回给用户一个合适的3xx,4xx或者5xx的HTTP状态码;以及一个application/xml格式的消息体。 错误响应的消息体例子: <?xml version="1.0" ?> <Error xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Code> AccessDenied </Code> <Message> Query-string authentication requires the Signature, Expires and OSSAccessKeyId parameters </Message> <RequestId> 1D842BC5425544BB </RequestId> <HostId> oss-cn-hangzhou.aliyuncs.com </HostId> </Error> 所有错误的消息体中都包括以下几个元素: Code:OSS返回给用户的错误码。 Message:OSS给出的详细错误信息。 RequestId:用于唯一标识该次请求的UUID;当你无法解决问题时,可以凭这个RequestId来请求OSS开发工程师的帮助。 HostId:用于标识访问的OSS集群,与用户请求时使用的Host一致。 其他特殊的错误信息元素请参照每个请求的具体介绍。 OSS的错误码 OSS的错误码列表如下: 错误码 描述 HTTP状态码 说明 AccessDenied 拒绝访问 403 原因及排除请参看权限问题及排查 BucketAlreadyExists Bucket已经存在 409 CreateBucket指定的BucketName已经使用,请选择新的BucketName BucketNotEmpty Bucket不为空 409 DeleteBucket前请先删除文件和未完成的分片上传任务 CallbackFailed 上传回调失败 203 原因及排除请参看上传回调错误及排除 EntityTooLarge 实体过大 400 Post请求消息长度超过 5GB,原因及排除请参看PostObject错误及排查 EntityTooSmall 实体过小 400 Post请求消息长度太短,排除请参看PostObject错误及排查 FieldItemTooLong Post请求中表单域过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 FilePartInterity 文件Part已改变 400 读分片数据时发现数据与校验和不符 FilePartNotExist 文件Part不存在 400 CompleteMultipartUpload提交的分片没有上传 FilePartStale 文件Part过时 400 读分片数据时发现数据与长度不符 IncorrectNumberOfFilesInPOSTRequest Post请求中文件个数非法 400 Post请求表单域中只能有一个file域,排除请参看PostObject错误及排查 InvalidArgument 参数格式错误 400 参数格式不符合要求,请对照相应API InvalidAccessKeyId AccessKeyId不存在 403 AccessKeyId无效或过期,排除请参看403错误及排查 InvalidBucketName 无效的Bucket名字 400 Bucket命名规则请参看开发人员指南 InvalidDigest 无效的摘要 400 指定的MD5校验值与文件不符,MD5的计算方法请参见PutObject InvalidEncryptionAlgorithmError 指定的熵编码加密算法错误 400 目前只支持AES256加密算法,详见PutObject InvalidObjectName 无效的Object名字 400 ObjectName命名规则请参看开发人员指南 InvalidPart 无效的Part 400 CompleteMultipartUpload提交的Part无效,PartNumber或ETag错误 InvalidPartOrder 无效的part顺序 400 CompleteMultipartUpload提交的Part需按照PartNumber升序排列 InvalidPolicyDocument 无效的Policy文档 400 Post请求中Policy无效,排除请参看PostObject错误及排查 InvalidTargetBucketForLogging Logging操作中有无效的目标bucket 400 存放Logging的目标bucket不存在,请更换 InternalError OSS内部发生错误 500 请重试 MalformedXML XML格式非法 400 请求中XML非法,请根据具体请求排除DeleteObjects、CompleteMultipartUpload、PutBucketLogging、PutBucketWebsite、PutBucketLifecycle、PutBucketReferer、PutBucketCORS MalformedPOSTRequest Post请求的body格式非法 400 表单域格式非法,排除请参看PostObject错误及排查 MaxPOSTPreDataLengthExceededError Post请求上传文件内容之外的body过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 MethodNotAllowed 不支持的方法 405 以OSS不支持的操作来访问资源 MissingArgument 缺少参数 411 请参看具体的API对照解决 MissingContentLength 缺少内容长度 411 消息即非chunked encoding又没有携带Content-Length NoSuchBucket Bucket不存在 404 NoSuchKey Object不存在 404 NoSuchUpload Multipart Upload ID不存在 404 没有初始化分片上传或者初始化的分片上传过期 NotImplemented 无法处理的方法 400 OSS不支持的操作 ObjectNotAppendable 不是可追加文件 409 OSS有三类文件normal、appendable、multipart,只有appendable类型的文件才能执行AppendObject PositionNotEqualToLength Append的位置和文件长度不相等 409 详见AppendObject PreconditionFailed 预处理错误 412 下载条件不符合,详见GetObject RequestTimeTooSkewed 发起请求的时间和服务器时间超出15分钟 403 排除请参看403错误及排查 RequestTimeout 请求超时 400 请重试 RequestIsNotMultiPartContent Post请求content-type非法 400 排除请参看PostObject错误及排查 DownloadTrafficRateLimitExceeded 下载流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 UploadTrafficRateLimitExceeded 上传流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 SignatureDoesNotMatch 签名错误 403 排除请参看Header中签名、URL中签名 TooManyBuckets Bucket数目超过限制 400 默认上限是 10,有调整需求请提交工单 OSS常见错误及排除 上传回调错误及排除 403错误及排查 PostObject错误及排查 权限问题及排查 跨域资源共享CORS错误及排除 防盗链Referer配置及错误排除 STS常见问题及排查 SDK/Tool常见错误及排除 Java SDK Python SDK C SDK ossfs ossftp OSS不支持的操作 如果试图以OSS不支持的操作来访问某个资源,返回405 Method Not Allowed错误。 错误请求示例: ABC /1.txt HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Date: Thu, 11 Aug 2016 03:53:40 GMT Authorization: signatureValue 返回示例: HTTP/1.1 405 Method Not Allowed Server: AliyunOSS Date: Thu, 11 Aug 2016 03:53:44 GMT Content-Type: application/xml Content-Length: 338 Connection: keep-alive x-oss-request-id: 57ABF6C8BC4D25D86CBA5ADE Allow: GET DELETE HEAD PUT POST OPTIONS <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>MethodNotAllowed</Code> <Message>The specified method is not allowed against this resource.</Message> <RequestId>57ABF6C8BC4D25D86CBA5ADE</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Method>abc</Method> <ResourceType>Bucket</ResourceType> </Error> 说明 如果访问的资源是 /bucket/, ResourceType应该是bucket,如果访问的资源是 /bucket/object,ResourceType应该是object。 OSS操作支持但参数不支持的操作 如果在OSS合法的操作中,添加了OSS不支持的参数(例如在PUT的时候,加入If-Modified-Since参数),OSS会返回400 Bad Request错误 错误请求示例: PUT /abc.zip HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Accept: */* Date: Thu, 11 Aug 2016 01:44:50 GMT If-Modified-Since: Thu, 11 Aug 2016 01:43:51 GMT Content-Length: 363 返回示例: HTTP/1.1 400 Bad Request Server: AliyunOSS Date: Thu, 11 Aug 2016 01:44:54 GMT Content-Type: application/xml Content-Length: 322 Connection: keep-alive x-oss-request-id: 57ABD896CCB80C366955187E x-oss-server-time: 0 <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>NotImplemented</Code> <Message>A header you provided implies functionality that is not implemented.</Message> <RequestId>57ABD896CCB80C366955187E</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Header>If-Modified-Since</Header> </Error>

2019-12-01 23:13:54 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 当用户访问OSS出现错误时,OSS会返回给用户相应的错误码和错误信息,便于用户定位问题,并做出适当的处理。 OSS的错误响应格式 当用户访问OSS出错时,OSS会返回给用户一个合适的3xx,4xx或者5xx的HTTP状态码;以及一个application/xml格式的消息体。 错误响应的消息体例子: <?xml version="1.0" ?> <Error xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Code> AccessDenied </Code> <Message> Query-string authentication requires the Signature, Expires and OSSAccessKeyId parameters </Message> <RequestId> 1D842BC5425544BB </RequestId> <HostId> oss-cn-hangzhou.aliyuncs.com </HostId> </Error> 所有错误的消息体中都包括以下几个元素: Code:OSS返回给用户的错误码。 Message:OSS给出的详细错误信息。 RequestId:用于唯一标识该次请求的UUID;当你无法解决问题时,可以凭这个RequestId来请求OSS开发工程师的帮助。 HostId:用于标识访问的OSS集群,与用户请求时使用的Host一致。 其他特殊的错误信息元素请参照每个请求的具体介绍。 OSS的错误码 OSS的错误码列表如下: 错误码 描述 HTTP状态码 说明 AccessDenied 拒绝访问 403 原因及排除请参看权限问题及排查 BucketAlreadyExists Bucket已经存在 409 CreateBucket指定的BucketName已经使用,请选择新的BucketName BucketNotEmpty Bucket不为空 409 DeleteBucket前请先删除文件和未完成的分片上传任务 CallbackFailed 上传回调失败 203 原因及排除请参看上传回调错误及排除 EntityTooLarge 实体过大 400 Post请求消息长度超过 5GB,原因及排除请参看PostObject错误及排查 EntityTooSmall 实体过小 400 Post请求消息长度太短,排除请参看PostObject错误及排查 FieldItemTooLong Post请求中表单域过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 FilePartInterity 文件Part已改变 400 读分片数据时发现数据与校验和不符 FilePartNotExist 文件Part不存在 400 CompleteMultipartUpload提交的分片没有上传 FilePartStale 文件Part过时 400 读分片数据时发现数据与长度不符 IncorrectNumberOfFilesInPOSTRequest Post请求中文件个数非法 400 Post请求表单域中只能有一个file域,排除请参看PostObject错误及排查 InvalidArgument 参数格式错误 400 参数格式不符合要求,请对照相应API InvalidAccessKeyId AccessKeyId不存在 403 AccessKeyId无效或过期,排除请参看403错误及排查 InvalidBucketName 无效的Bucket名字 400 Bucket命名规则请参看开发人员指南 InvalidDigest 无效的摘要 400 指定的MD5校验值与文件不符,MD5的计算方法请参见PutObject InvalidEncryptionAlgorithmError 指定的熵编码加密算法错误 400 目前只支持AES256加密算法,详见PutObject InvalidObjectName 无效的Object名字 400 ObjectName命名规则请参看开发人员指南 InvalidPart 无效的Part 400 CompleteMultipartUpload提交的Part无效,PartNumber或ETag错误 InvalidPartOrder 无效的part顺序 400 CompleteMultipartUpload提交的Part需按照PartNumber升序排列 InvalidPolicyDocument 无效的Policy文档 400 Post请求中Policy无效,排除请参看PostObject错误及排查 InvalidTargetBucketForLogging Logging操作中有无效的目标bucket 400 存放Logging的目标bucket不存在,请更换 InternalError OSS内部发生错误 500 请重试 MalformedXML XML格式非法 400 请求中XML非法,请根据具体请求排除DeleteObjects、CompleteMultipartUpload、PutBucketLogging、PutBucketWebsite、PutBucketLifecycle、PutBucketReferer、PutBucketCORS MalformedPOSTRequest Post请求的body格式非法 400 表单域格式非法,排除请参看PostObject错误及排查 MaxPOSTPreDataLengthExceededError Post请求上传文件内容之外的body过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 MethodNotAllowed 不支持的方法 405 以OSS不支持的操作来访问资源 MissingArgument 缺少参数 411 请参看具体的API对照解决 MissingContentLength 缺少内容长度 411 消息即非chunked encoding又没有携带Content-Length NoSuchBucket Bucket不存在 404 NoSuchKey Object不存在 404 NoSuchUpload Multipart Upload ID不存在 404 没有初始化分片上传或者初始化的分片上传过期 NotImplemented 无法处理的方法 400 OSS不支持的操作 ObjectNotAppendable 不是可追加文件 409 OSS有三类文件normal、appendable、multipart,只有appendable类型的文件才能执行AppendObject PositionNotEqualToLength Append的位置和文件长度不相等 409 详见AppendObject PreconditionFailed 预处理错误 412 下载条件不符合,详见GetObject RequestTimeTooSkewed 发起请求的时间和服务器时间超出15分钟 403 排除请参看403错误及排查 RequestTimeout 请求超时 400 请重试 RequestIsNotMultiPartContent Post请求content-type非法 400 排除请参看PostObject错误及排查 DownloadTrafficRateLimitExceeded 下载流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 UploadTrafficRateLimitExceeded 上传流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 SignatureDoesNotMatch 签名错误 403 排除请参看Header中签名、URL中签名 TooManyBuckets Bucket数目超过限制 400 默认上限是 10,有调整需求请提交工单 OSS常见错误及排除 上传回调错误及排除 403错误及排查 PostObject错误及排查 权限问题及排查 跨域资源共享CORS错误及排除 防盗链Referer配置及错误排除 STS常见问题及排查 SDK/Tool常见错误及排除 Java SDK Python SDK C SDK ossfs ossftp OSS不支持的操作 如果试图以OSS不支持的操作来访问某个资源,返回405 Method Not Allowed错误。 错误请求示例: ABC /1.txt HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Date: Thu, 11 Aug 2016 03:53:40 GMT Authorization: signatureValue 返回示例: HTTP/1.1 405 Method Not Allowed Server: AliyunOSS Date: Thu, 11 Aug 2016 03:53:44 GMT Content-Type: application/xml Content-Length: 338 Connection: keep-alive x-oss-request-id: 57ABF6C8BC4D25D86CBA5ADE Allow: GET DELETE HEAD PUT POST OPTIONS <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>MethodNotAllowed</Code> <Message>The specified method is not allowed against this resource.</Message> <RequestId>57ABF6C8BC4D25D86CBA5ADE</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Method>abc</Method> <ResourceType>Bucket</ResourceType> </Error> 说明 如果访问的资源是 /bucket/, ResourceType应该是bucket,如果访问的资源是 /bucket/object,ResourceType应该是object。 OSS操作支持但参数不支持的操作 如果在OSS合法的操作中,添加了OSS不支持的参数(例如在PUT的时候,加入If-Modified-Since参数),OSS会返回400 Bad Request错误 错误请求示例: PUT /abc.zip HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Accept: */* Date: Thu, 11 Aug 2016 01:44:50 GMT If-Modified-Since: Thu, 11 Aug 2016 01:43:51 GMT Content-Length: 363 返回示例: HTTP/1.1 400 Bad Request Server: AliyunOSS Date: Thu, 11 Aug 2016 01:44:54 GMT Content-Type: application/xml Content-Length: 322 Connection: keep-alive x-oss-request-id: 57ABD896CCB80C366955187E x-oss-server-time: 0 <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>NotImplemented</Code> <Message>A header you provided implies functionality that is not implemented.</Message> <RequestId>57ABD896CCB80C366955187E</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Header>If-Modified-Since</Header> </Error>

2019-12-01 23:13:55 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 当用户访问OSS出现错误时,OSS会返回给用户相应的错误码和错误信息,便于用户定位问题,并做出适当的处理。 OSS的错误响应格式 当用户访问OSS出错时,OSS会返回给用户一个合适的3xx,4xx或者5xx的HTTP状态码;以及一个application/xml格式的消息体。 错误响应的消息体例子: <?xml version="1.0" ?> <Error xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Code> AccessDenied </Code> <Message> Query-string authentication requires the Signature, Expires and OSSAccessKeyId parameters </Message> <RequestId> 1D842BC5425544BB </RequestId> <HostId> oss-cn-hangzhou.aliyuncs.com </HostId> </Error> 所有错误的消息体中都包括以下几个元素: Code:OSS返回给用户的错误码。 Message:OSS给出的详细错误信息。 RequestId:用于唯一标识该次请求的UUID;当你无法解决问题时,可以凭这个RequestId来请求OSS开发工程师的帮助。 HostId:用于标识访问的OSS集群,与用户请求时使用的Host一致。 其他特殊的错误信息元素请参照每个请求的具体介绍。 OSS的错误码 OSS的错误码列表如下: 错误码 描述 HTTP状态码 说明 AccessDenied 拒绝访问 403 原因及排除请参看权限问题及排查 BucketAlreadyExists Bucket已经存在 409 CreateBucket指定的BucketName已经使用,请选择新的BucketName BucketNotEmpty Bucket不为空 409 DeleteBucket前请先删除文件和未完成的分片上传任务 CallbackFailed 上传回调失败 203 原因及排除请参看上传回调错误及排除 EntityTooLarge 实体过大 400 Post请求消息长度超过 5GB,原因及排除请参看PostObject错误及排查 EntityTooSmall 实体过小 400 Post请求消息长度太短,排除请参看PostObject错误及排查 FieldItemTooLong Post请求中表单域过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 FilePartInterity 文件Part已改变 400 读分片数据时发现数据与校验和不符 FilePartNotExist 文件Part不存在 400 CompleteMultipartUpload提交的分片没有上传 FilePartStale 文件Part过时 400 读分片数据时发现数据与长度不符 IncorrectNumberOfFilesInPOSTRequest Post请求中文件个数非法 400 Post请求表单域中只能有一个file域,排除请参看PostObject错误及排查 InvalidArgument 参数格式错误 400 参数格式不符合要求,请对照相应API InvalidAccessKeyId AccessKeyId不存在 403 AccessKeyId无效或过期,排除请参看403错误及排查 InvalidBucketName 无效的Bucket名字 400 Bucket命名规则请参看开发人员指南 InvalidDigest 无效的摘要 400 指定的MD5校验值与文件不符,MD5的计算方法请参见PutObject InvalidEncryptionAlgorithmError 指定的熵编码加密算法错误 400 目前只支持AES256加密算法,详见PutObject InvalidObjectName 无效的Object名字 400 ObjectName命名规则请参看开发人员指南 InvalidPart 无效的Part 400 CompleteMultipartUpload提交的Part无效,PartNumber或ETag错误 InvalidPartOrder 无效的part顺序 400 CompleteMultipartUpload提交的Part需按照PartNumber升序排列 InvalidPolicyDocument 无效的Policy文档 400 Post请求中Policy无效,排除请参看PostObject错误及排查 InvalidTargetBucketForLogging Logging操作中有无效的目标bucket 400 存放Logging的目标bucket不存在,请更换 InternalError OSS内部发生错误 500 请重试 MalformedXML XML格式非法 400 请求中XML非法,请根据具体请求排除DeleteObjects、CompleteMultipartUpload、PutBucketLogging、PutBucketWebsite、PutBucketLifecycle、PutBucketReferer、PutBucketCORS MalformedPOSTRequest Post请求的body格式非法 400 表单域格式非法,排除请参看PostObject错误及排查 MaxPOSTPreDataLengthExceededError Post请求上传文件内容之外的body过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 MethodNotAllowed 不支持的方法 405 以OSS不支持的操作来访问资源 MissingArgument 缺少参数 411 请参看具体的API对照解决 MissingContentLength 缺少内容长度 411 消息即非chunked encoding又没有携带Content-Length NoSuchBucket Bucket不存在 404 NoSuchKey Object不存在 404 NoSuchUpload Multipart Upload ID不存在 404 没有初始化分片上传或者初始化的分片上传过期 NotImplemented 无法处理的方法 400 OSS不支持的操作 ObjectNotAppendable 不是可追加文件 409 OSS有三类文件normal、appendable、multipart,只有appendable类型的文件才能执行AppendObject PositionNotEqualToLength Append的位置和文件长度不相等 409 详见AppendObject PreconditionFailed 预处理错误 412 下载条件不符合,详见GetObject RequestTimeTooSkewed 发起请求的时间和服务器时间超出15分钟 403 排除请参看403错误及排查 RequestTimeout 请求超时 400 请重试 RequestIsNotMultiPartContent Post请求content-type非法 400 排除请参看PostObject错误及排查 DownloadTrafficRateLimitExceeded 下载流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 UploadTrafficRateLimitExceeded 上传流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 SignatureDoesNotMatch 签名错误 403 排除请参看Header中签名、URL中签名 TooManyBuckets Bucket数目超过限制 400 默认上限是 10,有调整需求请提交工单 OSS常见错误及排除 上传回调错误及排除 403错误及排查 PostObject错误及排查 权限问题及排查 跨域资源共享CORS错误及排除 防盗链Referer配置及错误排除 STS常见问题及排查 SDK/Tool常见错误及排除 Java SDK Python SDK C SDK ossfs ossftp OSS不支持的操作 如果试图以OSS不支持的操作来访问某个资源,返回405 Method Not Allowed错误。 错误请求示例: ABC /1.txt HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Date: Thu, 11 Aug 2016 03:53:40 GMT Authorization: signatureValue 返回示例: HTTP/1.1 405 Method Not Allowed Server: AliyunOSS Date: Thu, 11 Aug 2016 03:53:44 GMT Content-Type: application/xml Content-Length: 338 Connection: keep-alive x-oss-request-id: 57ABF6C8BC4D25D86CBA5ADE Allow: GET DELETE HEAD PUT POST OPTIONS <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>MethodNotAllowed</Code> <Message>The specified method is not allowed against this resource.</Message> <RequestId>57ABF6C8BC4D25D86CBA5ADE</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Method>abc</Method> <ResourceType>Bucket</ResourceType> </Error> 说明 如果访问的资源是 /bucket/, ResourceType应该是bucket,如果访问的资源是 /bucket/object,ResourceType应该是object。 OSS操作支持但参数不支持的操作 如果在OSS合法的操作中,添加了OSS不支持的参数(例如在PUT的时候,加入If-Modified-Since参数),OSS会返回400 Bad Request错误 错误请求示例: PUT /abc.zip HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Accept: */* Date: Thu, 11 Aug 2016 01:44:50 GMT If-Modified-Since: Thu, 11 Aug 2016 01:43:51 GMT Content-Length: 363 返回示例: HTTP/1.1 400 Bad Request Server: AliyunOSS Date: Thu, 11 Aug 2016 01:44:54 GMT Content-Type: application/xml Content-Length: 322 Connection: keep-alive x-oss-request-id: 57ABD896CCB80C366955187E x-oss-server-time: 0 <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>NotImplemented</Code> <Message>A header you provided implies functionality that is not implemented.</Message> <RequestId>57ABD896CCB80C366955187E</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Header>If-Modified-Since</Header> </Error>

2019-12-01 23:13:55 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 当用户访问OSS出现错误时,OSS会返回给用户相应的错误码和错误信息,便于用户定位问题,并做出适当的处理。 OSS的错误响应格式 当用户访问OSS出错时,OSS会返回给用户一个合适的3xx,4xx或者5xx的HTTP状态码;以及一个application/xml格式的消息体。 错误响应的消息体例子: <?xml version="1.0" ?> <Error xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Code> AccessDenied </Code> <Message> Query-string authentication requires the Signature, Expires and OSSAccessKeyId parameters </Message> <RequestId> 1D842BC5425544BB </RequestId> <HostId> oss-cn-hangzhou.aliyuncs.com </HostId> </Error> 所有错误的消息体中都包括以下几个元素: Code:OSS返回给用户的错误码。 Message:OSS给出的详细错误信息。 RequestId:用于唯一标识该次请求的UUID;当你无法解决问题时,可以凭这个RequestId来请求OSS开发工程师的帮助。 HostId:用于标识访问的OSS集群,与用户请求时使用的Host一致。 其他特殊的错误信息元素请参照每个请求的具体介绍。 OSS的错误码 OSS的错误码列表如下: 错误码 描述 HTTP状态码 说明 AccessDenied 拒绝访问 403 原因及排除请参看权限问题及排查 BucketAlreadyExists Bucket已经存在 409 CreateBucket指定的BucketName已经使用,请选择新的BucketName BucketNotEmpty Bucket不为空 409 DeleteBucket前请先删除文件和未完成的分片上传任务 CallbackFailed 上传回调失败 203 原因及排除请参看上传回调错误及排除 EntityTooLarge 实体过大 400 Post请求消息长度超过 5GB,原因及排除请参看PostObject错误及排查 EntityTooSmall 实体过小 400 Post请求消息长度太短,排除请参看PostObject错误及排查 FieldItemTooLong Post请求中表单域过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 FilePartInterity 文件Part已改变 400 读分片数据时发现数据与校验和不符 FilePartNotExist 文件Part不存在 400 CompleteMultipartUpload提交的分片没有上传 FilePartStale 文件Part过时 400 读分片数据时发现数据与长度不符 IncorrectNumberOfFilesInPOSTRequest Post请求中文件个数非法 400 Post请求表单域中只能有一个file域,排除请参看PostObject错误及排查 InvalidArgument 参数格式错误 400 参数格式不符合要求,请对照相应API InvalidAccessKeyId AccessKeyId不存在 403 AccessKeyId无效或过期,排除请参看403错误及排查 InvalidBucketName 无效的Bucket名字 400 Bucket命名规则请参看开发人员指南 InvalidDigest 无效的摘要 400 指定的MD5校验值与文件不符,MD5的计算方法请参见PutObject InvalidEncryptionAlgorithmError 指定的熵编码加密算法错误 400 目前只支持AES256加密算法,详见PutObject InvalidObjectName 无效的Object名字 400 ObjectName命名规则请参看开发人员指南 InvalidPart 无效的Part 400 CompleteMultipartUpload提交的Part无效,PartNumber或ETag错误 InvalidPartOrder 无效的part顺序 400 CompleteMultipartUpload提交的Part需按照PartNumber升序排列 InvalidPolicyDocument 无效的Policy文档 400 Post请求中Policy无效,排除请参看PostObject错误及排查 InvalidTargetBucketForLogging Logging操作中有无效的目标bucket 400 存放Logging的目标bucket不存在,请更换 InternalError OSS内部发生错误 500 请重试 MalformedXML XML格式非法 400 请求中XML非法,请根据具体请求排除DeleteObjects、CompleteMultipartUpload、PutBucketLogging、PutBucketWebsite、PutBucketLifecycle、PutBucketReferer、PutBucketCORS MalformedPOSTRequest Post请求的body格式非法 400 表单域格式非法,排除请参看PostObject错误及排查 MaxPOSTPreDataLengthExceededError Post请求上传文件内容之外的body过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 MethodNotAllowed 不支持的方法 405 以OSS不支持的操作来访问资源 MissingArgument 缺少参数 411 请参看具体的API对照解决 MissingContentLength 缺少内容长度 411 消息即非chunked encoding又没有携带Content-Length NoSuchBucket Bucket不存在 404 NoSuchKey Object不存在 404 NoSuchUpload Multipart Upload ID不存在 404 没有初始化分片上传或者初始化的分片上传过期 NotImplemented 无法处理的方法 400 OSS不支持的操作 ObjectNotAppendable 不是可追加文件 409 OSS有三类文件normal、appendable、multipart,只有appendable类型的文件才能执行AppendObject PositionNotEqualToLength Append的位置和文件长度不相等 409 详见AppendObject PreconditionFailed 预处理错误 412 下载条件不符合,详见GetObject RequestTimeTooSkewed 发起请求的时间和服务器时间超出15分钟 403 排除请参看403错误及排查 RequestTimeout 请求超时 400 请重试 RequestIsNotMultiPartContent Post请求content-type非法 400 排除请参看PostObject错误及排查 DownloadTrafficRateLimitExceeded 下载流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 UploadTrafficRateLimitExceeded 上传流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 SignatureDoesNotMatch 签名错误 403 排除请参看Header中签名、URL中签名 TooManyBuckets Bucket数目超过限制 400 默认上限是 10,有调整需求请提交工单 OSS常见错误及排除 上传回调错误及排除 403错误及排查 PostObject错误及排查 权限问题及排查 跨域资源共享CORS错误及排除 防盗链Referer配置及错误排除 STS常见问题及排查 SDK/Tool常见错误及排除 Java SDK Python SDK C SDK ossfs ossftp OSS不支持的操作 如果试图以OSS不支持的操作来访问某个资源,返回405 Method Not Allowed错误。 错误请求示例: ABC /1.txt HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Date: Thu, 11 Aug 2016 03:53:40 GMT Authorization: signatureValue 返回示例: HTTP/1.1 405 Method Not Allowed Server: AliyunOSS Date: Thu, 11 Aug 2016 03:53:44 GMT Content-Type: application/xml Content-Length: 338 Connection: keep-alive x-oss-request-id: 57ABF6C8BC4D25D86CBA5ADE Allow: GET DELETE HEAD PUT POST OPTIONS <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>MethodNotAllowed</Code> <Message>The specified method is not allowed against this resource.</Message> <RequestId>57ABF6C8BC4D25D86CBA5ADE</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Method>abc</Method> <ResourceType>Bucket</ResourceType> </Error> 说明 如果访问的资源是 /bucket/, ResourceType应该是bucket,如果访问的资源是 /bucket/object,ResourceType应该是object。 OSS操作支持但参数不支持的操作 如果在OSS合法的操作中,添加了OSS不支持的参数(例如在PUT的时候,加入If-Modified-Since参数),OSS会返回400 Bad Request错误 错误请求示例: PUT /abc.zip HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Accept: */* Date: Thu, 11 Aug 2016 01:44:50 GMT If-Modified-Since: Thu, 11 Aug 2016 01:43:51 GMT Content-Length: 363 返回示例: HTTP/1.1 400 Bad Request Server: AliyunOSS Date: Thu, 11 Aug 2016 01:44:54 GMT Content-Type: application/xml Content-Length: 322 Connection: keep-alive x-oss-request-id: 57ABD896CCB80C366955187E x-oss-server-time: 0 <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>NotImplemented</Code> <Message>A header you provided implies functionality that is not implemented.</Message> <RequestId>57ABD896CCB80C366955187E</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Header>If-Modified-Since</Header> </Error>

2019-12-01 23:13:55 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 当用户访问OSS出现错误时,OSS会返回给用户相应的错误码和错误信息,便于用户定位问题,并做出适当的处理。 OSS的错误响应格式 当用户访问OSS出错时,OSS会返回给用户一个合适的3xx,4xx或者5xx的HTTP状态码;以及一个application/xml格式的消息体。 错误响应的消息体例子: <?xml version="1.0" ?> <Error xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Code> AccessDenied </Code> <Message> Query-string authentication requires the Signature, Expires and OSSAccessKeyId parameters </Message> <RequestId> 1D842BC5425544BB </RequestId> <HostId> oss-cn-hangzhou.aliyuncs.com </HostId> </Error> 所有错误的消息体中都包括以下几个元素: Code:OSS返回给用户的错误码。 Message:OSS给出的详细错误信息。 RequestId:用于唯一标识该次请求的UUID;当你无法解决问题时,可以凭这个RequestId来请求OSS开发工程师的帮助。 HostId:用于标识访问的OSS集群,与用户请求时使用的Host一致。 其他特殊的错误信息元素请参照每个请求的具体介绍。 OSS的错误码 OSS的错误码列表如下: 错误码 描述 HTTP状态码 说明 AccessDenied 拒绝访问 403 原因及排除请参看权限问题及排查 BucketAlreadyExists Bucket已经存在 409 CreateBucket指定的BucketName已经使用,请选择新的BucketName BucketNotEmpty Bucket不为空 409 DeleteBucket前请先删除文件和未完成的分片上传任务 CallbackFailed 上传回调失败 203 原因及排除请参看上传回调错误及排除 EntityTooLarge 实体过大 400 Post请求消息长度超过 5GB,原因及排除请参看PostObject错误及排查 EntityTooSmall 实体过小 400 Post请求消息长度太短,排除请参看PostObject错误及排查 FieldItemTooLong Post请求中表单域过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 FilePartInterity 文件Part已改变 400 读分片数据时发现数据与校验和不符 FilePartNotExist 文件Part不存在 400 CompleteMultipartUpload提交的分片没有上传 FilePartStale 文件Part过时 400 读分片数据时发现数据与长度不符 IncorrectNumberOfFilesInPOSTRequest Post请求中文件个数非法 400 Post请求表单域中只能有一个file域,排除请参看PostObject错误及排查 InvalidArgument 参数格式错误 400 参数格式不符合要求,请对照相应API InvalidAccessKeyId AccessKeyId不存在 403 AccessKeyId无效或过期,排除请参看403错误及排查 InvalidBucketName 无效的Bucket名字 400 Bucket命名规则请参看开发人员指南 InvalidDigest 无效的摘要 400 指定的MD5校验值与文件不符,MD5的计算方法请参见PutObject InvalidEncryptionAlgorithmError 指定的熵编码加密算法错误 400 目前只支持AES256加密算法,详见PutObject InvalidObjectName 无效的Object名字 400 ObjectName命名规则请参看开发人员指南 InvalidPart 无效的Part 400 CompleteMultipartUpload提交的Part无效,PartNumber或ETag错误 InvalidPartOrder 无效的part顺序 400 CompleteMultipartUpload提交的Part需按照PartNumber升序排列 InvalidPolicyDocument 无效的Policy文档 400 Post请求中Policy无效,排除请参看PostObject错误及排查 InvalidTargetBucketForLogging Logging操作中有无效的目标bucket 400 存放Logging的目标bucket不存在,请更换 InternalError OSS内部发生错误 500 请重试 MalformedXML XML格式非法 400 请求中XML非法,请根据具体请求排除DeleteObjects、CompleteMultipartUpload、PutBucketLogging、PutBucketWebsite、PutBucketLifecycle、PutBucketReferer、PutBucketCORS MalformedPOSTRequest Post请求的body格式非法 400 表单域格式非法,排除请参看PostObject错误及排查 MaxPOSTPreDataLengthExceededError Post请求上传文件内容之外的body过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 MethodNotAllowed 不支持的方法 405 以OSS不支持的操作来访问资源 MissingArgument 缺少参数 411 请参看具体的API对照解决 MissingContentLength 缺少内容长度 411 消息即非chunked encoding又没有携带Content-Length NoSuchBucket Bucket不存在 404 NoSuchKey Object不存在 404 NoSuchUpload Multipart Upload ID不存在 404 没有初始化分片上传或者初始化的分片上传过期 NotImplemented 无法处理的方法 400 OSS不支持的操作 ObjectNotAppendable 不是可追加文件 409 OSS有三类文件normal、appendable、multipart,只有appendable类型的文件才能执行AppendObject PositionNotEqualToLength Append的位置和文件长度不相等 409 详见AppendObject PreconditionFailed 预处理错误 412 下载条件不符合,详见GetObject RequestTimeTooSkewed 发起请求的时间和服务器时间超出15分钟 403 排除请参看403错误及排查 RequestTimeout 请求超时 400 请重试 RequestIsNotMultiPartContent Post请求content-type非法 400 排除请参看PostObject错误及排查 DownloadTrafficRateLimitExceeded 下载流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 UploadTrafficRateLimitExceeded 上传流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 SignatureDoesNotMatch 签名错误 403 排除请参看Header中签名、URL中签名 TooManyBuckets Bucket数目超过限制 400 默认上限是 10,有调整需求请提交工单 OSS常见错误及排除 上传回调错误及排除 403错误及排查 PostObject错误及排查 权限问题及排查 跨域资源共享CORS错误及排除 防盗链Referer配置及错误排除 STS常见问题及排查 SDK/Tool常见错误及排除 Java SDK Python SDK C SDK ossfs ossftp OSS不支持的操作 如果试图以OSS不支持的操作来访问某个资源,返回405 Method Not Allowed错误。 错误请求示例: ABC /1.txt HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Date: Thu, 11 Aug 2016 03:53:40 GMT Authorization: signatureValue 返回示例: HTTP/1.1 405 Method Not Allowed Server: AliyunOSS Date: Thu, 11 Aug 2016 03:53:44 GMT Content-Type: application/xml Content-Length: 338 Connection: keep-alive x-oss-request-id: 57ABF6C8BC4D25D86CBA5ADE Allow: GET DELETE HEAD PUT POST OPTIONS <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>MethodNotAllowed</Code> <Message>The specified method is not allowed against this resource.</Message> <RequestId>57ABF6C8BC4D25D86CBA5ADE</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Method>abc</Method> <ResourceType>Bucket</ResourceType> </Error> 说明 如果访问的资源是 /bucket/, ResourceType应该是bucket,如果访问的资源是 /bucket/object,ResourceType应该是object。 OSS操作支持但参数不支持的操作 如果在OSS合法的操作中,添加了OSS不支持的参数(例如在PUT的时候,加入If-Modified-Since参数),OSS会返回400 Bad Request错误 错误请求示例: PUT /abc.zip HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Accept: */* Date: Thu, 11 Aug 2016 01:44:50 GMT If-Modified-Since: Thu, 11 Aug 2016 01:43:51 GMT Content-Length: 363 返回示例: HTTP/1.1 400 Bad Request Server: AliyunOSS Date: Thu, 11 Aug 2016 01:44:54 GMT Content-Type: application/xml Content-Length: 322 Connection: keep-alive x-oss-request-id: 57ABD896CCB80C366955187E x-oss-server-time: 0 <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>NotImplemented</Code> <Message>A header you provided implies functionality that is not implemented.</Message> <RequestId>57ABD896CCB80C366955187E</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Header>If-Modified-Since</Header> </Error>

2019-12-01 23:13:55 0 浏览量 回答数 0

回答

详细解答可以参考官方帮助文档 当用户访问OSS出现错误时,OSS会返回给用户相应的错误码和错误信息,便于用户定位问题,并做出适当的处理。 OSS的错误响应格式 当用户访问OSS出错时,OSS会返回给用户一个合适的3xx,4xx或者5xx的HTTP状态码;以及一个application/xml格式的消息体。 错误响应的消息体例子: <?xml version="1.0" ?> <Error xmlns=”http://doc.oss-cn-hangzhou.aliyuncs.com”> <Code> AccessDenied </Code> <Message> Query-string authentication requires the Signature, Expires and OSSAccessKeyId parameters </Message> <RequestId> 1D842BC5425544BB </RequestId> <HostId> oss-cn-hangzhou.aliyuncs.com </HostId> </Error> 所有错误的消息体中都包括以下几个元素: Code:OSS返回给用户的错误码。 Message:OSS给出的详细错误信息。 RequestId:用于唯一标识该次请求的UUID;当你无法解决问题时,可以凭这个RequestId来请求OSS开发工程师的帮助。 HostId:用于标识访问的OSS集群,与用户请求时使用的Host一致。 其他特殊的错误信息元素请参照每个请求的具体介绍。 OSS的错误码 OSS的错误码列表如下: 错误码 描述 HTTP状态码 说明 AccessDenied 拒绝访问 403 原因及排除请参看权限问题及排查 BucketAlreadyExists Bucket已经存在 409 CreateBucket指定的BucketName已经使用,请选择新的BucketName BucketNotEmpty Bucket不为空 409 DeleteBucket前请先删除文件和未完成的分片上传任务 CallbackFailed 上传回调失败 203 原因及排除请参看上传回调错误及排除 EntityTooLarge 实体过大 400 Post请求消息长度超过 5GB,原因及排除请参看PostObject错误及排查 EntityTooSmall 实体过小 400 Post请求消息长度太短,排除请参看PostObject错误及排查 FieldItemTooLong Post请求中表单域过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 FilePartInterity 文件Part已改变 400 读分片数据时发现数据与校验和不符 FilePartNotExist 文件Part不存在 400 CompleteMultipartUpload提交的分片没有上传 FilePartStale 文件Part过时 400 读分片数据时发现数据与长度不符 IncorrectNumberOfFilesInPOSTRequest Post请求中文件个数非法 400 Post请求表单域中只能有一个file域,排除请参看PostObject错误及排查 InvalidArgument 参数格式错误 400 参数格式不符合要求,请对照相应API InvalidAccessKeyId AccessKeyId不存在 403 AccessKeyId无效或过期,排除请参看403错误及排查 InvalidBucketName 无效的Bucket名字 400 Bucket命名规则请参看开发人员指南 InvalidDigest 无效的摘要 400 指定的MD5校验值与文件不符,MD5的计算方法请参见PutObject InvalidEncryptionAlgorithmError 指定的熵编码加密算法错误 400 目前只支持AES256加密算法,详见PutObject InvalidObjectName 无效的Object名字 400 ObjectName命名规则请参看开发人员指南 InvalidPart 无效的Part 400 CompleteMultipartUpload提交的Part无效,PartNumber或ETag错误 InvalidPartOrder 无效的part顺序 400 CompleteMultipartUpload提交的Part需按照PartNumber升序排列 InvalidPolicyDocument 无效的Policy文档 400 Post请求中Policy无效,排除请参看PostObject错误及排查 InvalidTargetBucketForLogging Logging操作中有无效的目标bucket 400 存放Logging的目标bucket不存在,请更换 InternalError OSS内部发生错误 500 请重试 MalformedXML XML格式非法 400 请求中XML非法,请根据具体请求排除DeleteObjects、CompleteMultipartUpload、PutBucketLogging、PutBucketWebsite、PutBucketLifecycle、PutBucketReferer、PutBucketCORS MalformedPOSTRequest Post请求的body格式非法 400 表单域格式非法,排除请参看PostObject错误及排查 MaxPOSTPreDataLengthExceededError Post请求上传文件内容之外的body过大 400 除了file的表单域大小不要超过4KB,排除请参看PostObject错误及排查 MethodNotAllowed 不支持的方法 405 以OSS不支持的操作来访问资源 MissingArgument 缺少参数 411 请参看具体的API对照解决 MissingContentLength 缺少内容长度 411 消息即非chunked encoding又没有携带Content-Length NoSuchBucket Bucket不存在 404 NoSuchKey Object不存在 404 NoSuchUpload Multipart Upload ID不存在 404 没有初始化分片上传或者初始化的分片上传过期 NotImplemented 无法处理的方法 400 OSS不支持的操作 ObjectNotAppendable 不是可追加文件 409 OSS有三类文件normal、appendable、multipart,只有appendable类型的文件才能执行AppendObject PositionNotEqualToLength Append的位置和文件长度不相等 409 详见AppendObject PreconditionFailed 预处理错误 412 下载条件不符合,详见GetObject RequestTimeTooSkewed 发起请求的时间和服务器时间超出15分钟 403 排除请参看403错误及排查 RequestTimeout 请求超时 400 请重试 RequestIsNotMultiPartContent Post请求content-type非法 400 排除请参看PostObject错误及排查 DownloadTrafficRateLimitExceeded 下载流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 UploadTrafficRateLimitExceeded 上传流量超过限制 503 默认上限是 5Gbps,包括内外网,有调整需求请提交工单 SignatureDoesNotMatch 签名错误 403 排除请参看Header中签名、URL中签名 TooManyBuckets Bucket数目超过限制 400 默认上限是 10,有调整需求请提交工单 OSS常见错误及排除 上传回调错误及排除 403错误及排查 PostObject错误及排查 权限问题及排查 跨域资源共享CORS错误及排除 防盗链Referer配置及错误排除 STS常见问题及排查 SDK/Tool常见错误及排除 Java SDK Python SDK C SDK ossfs ossftp OSS不支持的操作 如果试图以OSS不支持的操作来访问某个资源,返回405 Method Not Allowed错误。 错误请求示例: ABC /1.txt HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Date: Thu, 11 Aug 2016 03:53:40 GMT Authorization: signatureValue 返回示例: HTTP/1.1 405 Method Not Allowed Server: AliyunOSS Date: Thu, 11 Aug 2016 03:53:44 GMT Content-Type: application/xml Content-Length: 338 Connection: keep-alive x-oss-request-id: 57ABF6C8BC4D25D86CBA5ADE Allow: GET DELETE HEAD PUT POST OPTIONS <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>MethodNotAllowed</Code> <Message>The specified method is not allowed against this resource.</Message> <RequestId>57ABF6C8BC4D25D86CBA5ADE</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Method>abc</Method> <ResourceType>Bucket</ResourceType> </Error> 说明 如果访问的资源是 /bucket/, ResourceType应该是bucket,如果访问的资源是 /bucket/object,ResourceType应该是object。 OSS操作支持但参数不支持的操作 如果在OSS合法的操作中,添加了OSS不支持的参数(例如在PUT的时候,加入If-Modified-Since参数),OSS会返回400 Bad Request错误 错误请求示例: PUT /abc.zip HTTP/1.1 Host: bucketname.oss-cn-shanghai.aliyuncs.com Accept: */* Date: Thu, 11 Aug 2016 01:44:50 GMT If-Modified-Since: Thu, 11 Aug 2016 01:43:51 GMT Content-Length: 363 返回示例: HTTP/1.1 400 Bad Request Server: AliyunOSS Date: Thu, 11 Aug 2016 01:44:54 GMT Content-Type: application/xml Content-Length: 322 Connection: keep-alive x-oss-request-id: 57ABD896CCB80C366955187E x-oss-server-time: 0 <?xml version="1.0" encoding="UTF-8"?> <Error> <Code>NotImplemented</Code> <Message>A header you provided implies functionality that is not implemented.</Message> <RequestId>57ABD896CCB80C366955187E</RequestId> <HostId>bucketname.oss-cn-shanghai.aliyuncs.com</HostId> <Header>If-Modified-Since</Header> </Error>

2019-12-01 23:13:54 0 浏览量 回答数 0

问题

如何实现OSS错误响应?

青衫无名 2019-12-01 22:00:27 2973 浏览量 回答数 0

问题

API调用方式

云栖大讲堂 2019-12-01 21:07:55 1412 浏览量 回答数 0

回答

一、说明 只有先激活开发者模式才可以进行测试生活号相关功能 。 1、生活号激活开发者模式demo:【点击查看】 。 2、生活号官方激活文档:【点击查看】。 3、生活号支付宝后台操作地址(无需开发接口):【点击访问】。 二、普通公钥方式激活流程 1、首先点击【开发者中心】>选择生活号类型>点击生活号类型下的生活号应用进入生活号详情页>点击应用信息这一栏,到如下图页面。 注:如未创建过生活号应用,可参考【如何创建应用】说明进行创建生活号应用,再进行配置操作。 2、点击应用网关这一栏上的设置按钮,在弹出的页面上加签模式选择公钥,并且配置应用公钥内容,再保存设置,如下图所示。 注:商户应用公钥如何生成可参考【如何生成RSA2密钥】说明内容。 3、再次在当前页面点击应用网关这一栏的验证应用网关按钮,到如下图页面。 4、通过下载【生活号官方demo】,在demo上配置相关的支付宝的appid、商户公钥、商户私钥、支付宝公钥等数据(以java截图为例)。 5、demo上的数据配置成功后,(以java版demo为例)把demo放在自己的服务器上,将demo程序中GatewayServlet的访问路径写入步骤3中的应用网关输入框中(如该demo服务的外网地址为http://test.fuwuchuang.com,此时应用网关为http://test.fuwuchuang.com/fuwuchuang_demo/gateway.do)。 注1:gateway.do文件页面在php版demo对应的是Gateway.php这个页面,在.net版demo上对应的是Gateway.asp页面。 注2:如接收页面是自行编写的,必须能外网访问,并且能以post方式去接收GBK编码格式的数据内容,并且需要在接收页面进行做验签处理,验签成功后需符合给支付宝信息,详细可参考demo上的接收写法或者参考【激活开发者文档说明】,应用网关拼接方式是:外网地址+项目名称+能接收数据的文件页面。 6、把拼接好的地址填写在步骤3中页面上的应用网关这一栏上,点击确认按钮,如代码和配置的数据无误的情况下,就会显示激活成功。 三、公钥证书方式激活流程 1、首先点击【开发者中心】>选择生活号类型>点击生活号类型下的生活号应用进入生活号详情页>点击应用信息这一栏,到如下图页面。 帖子图片155.png 注:如未创建过生活号应用,可参考【如何创建应用】说明进行创建生活号应用,再进行配置操作。 2、点击应用网关这一栏上的设置按钮,在弹出的页面上加签模式选择公钥证书,并且配置应用公钥内容,再保存设置,如下图所示。 帖子图片156.png 注:公钥证书文件如何生成可参考【如何生成公钥证书】说明内容。 3、再次在当前页面点击应用网关这一栏的验证应用网关按钮,到如下图所示页面。 4、通过下载【生活号官方demo】,(以java的demo说明为例)参考demo中的GatewayServlet的文件上的代码去编写能以post方式去接收GBK编码格式的数据内容页面,并且需在该页面写证书验签的代码逻辑,详细证书验签的逻辑说明可参考【公钥证书签名验签方法】内的生活号响应返回的数据验签说明。 注1:生活号官方demo上封装的sdk版本过低会存在没有公钥证书的验签方法,需下载【服务端sdk】进行更新替换。 注2:支付宝网关会向开发者网关发送的验证消息内容请求示例如下。 REQUEST URL: http://example.com/gateway.do REQUEST METHOD: POST CONTENT:(以下数据为参与验签时传递的待签名字符串内容,验签时需对数据进行排序处理) service=alipay.service.check sign=ntjOmXFGJMdfdMnrTL5rEp9QG8d0lDEoGg3ZHvqemHeI8BlQoEsFbhEn0IfQT+pvfJz5RCuE+3Qh1X7I4z5iTIiGjDBstc0xeuiAmtP9TrJZuw2jUAODFB9qOwBJLNcWlKHUGTU/db/qRsJQCj8EjoJvSi9MRM/xKv/XmduS/C4= sign_type=RSA2 charset=GBK biz_content= 5、验签成功后需返回验签成功消息给支付宝,内容示例如下。 true 6cd4ee7e4f31c1adba2380cc65da4a3a DXr8LVfHytoZ3RR0K95pzGtA3d9LdpjIjLEis2BDIPQisPwS+FMFxZt9NCMt531EeDj/nbzoIAz8Or7PuqxNfSzNI8qnhirm/Hvr8uedXX9JiQxHu8q3Rw2lJWD8cqQzgf3xwV/+wbN8yuI7s8xjo6odq6NCqrAIu7E0DDfZyKo= RSA2 app_cert_sn值是通过解析应用公钥证书文件中签发机构名称(name)以及内置序列号(serialNumber),将二者拼接后的字符串计算MD5值获取,可参考开放平台SDK源码中AlipaySignature.getCertSN实现,如下所示。 /** * 获取证书序列号 * @param certPath X.509证书文件路径 * @return 返回证书序列号 * @throws AlipayApiException */ public static String getCertSN(String certPath) sign值是对 节点内的内容作待签名字符串进行生成,如下所示。 true 注:如何进行签名生成sign值可参考【证书签名验签】说明帖子。 6、编写完相关的页面代码后,进行拼接地址链接:外网地址+项目名称+编写好的页面(带有接收数据代码,验签代码和返回验签成功消息给支付宝代码)。 7、把拼接好的地址链接放在第3步骤截图页面上的应用网关上,点击确认按钮,如代码和配置的数据无误的情况下,就会显示激活成功。

保持可爱mmm 2020-05-07 10:56:40 0 浏览量 回答数 0

问题

【精品问答】python技术1000问(2)

问问小秘 2019-12-01 22:03:02 3129 浏览量 回答数 1

问题

PCI远程扫描漏洞补丁如何解决

1298117508539047 2019-12-01 18:51:40 2296 浏览量 回答数 0

问题

SSH面试题

琴瑟 2019-12-01 21:46:22 3489 浏览量 回答数 0
阿里云大学 云服务器ECS com域名 网站域名whois查询 开发者平台 小程序定制 小程序开发 国内短信套餐包 开发者技术与产品 云数据库 图像识别 开发者问答 阿里云建站 阿里云备案 云市场 万网 阿里云帮助文档 免费套餐 开发者工具 企业信息查询 小程序开发制作 视频内容分析 企业网站制作 视频集锦 代理记账服务 2020阿里巴巴研发效能峰会 企业建站模板 云效成长地图 高端建站