文档

0002-00000604

更新时间:

问题描述

带有IP地址限制的请求签名不匹配。

问题原因

请求采用带有访问IP地址限制的签名,但是请求中提供的签名与OSS计算的签名不匹配。

问题示例

您发起了包含请求IP地址限制的签名请求,但是没有从指定的IP地址范围内发起请求,或者签名计算不正确。

GET /oss.jpg?x-oss-ac-forward-allow=true&Expires=1647730289&x-oss-ac-subnet-mask=32&Signature=d38L***&OSSAccessKeyId=u8r***n6m HTTP/1.1
Host: oss-example.oss-cn-hangzhou.aliyuncs.com
Date: Tue, 20 Dec 2022 08:48:18 GMT

解决方案

  • 确定从指定的IP地址段发起请求。

  • 推荐使用SDK发起请求,免去手动签名的过程。更多信息,请参见使用阿里云SDK发起请求概述

    使用SDK发起请求后,如果报错签名不匹配,请按以下步骤进行排查。

      1. 确认Endpoint格式是否填写正确。

        以华东1(杭州)地域为例,正确的Endpoint格式为http://oss-cn-hangzhou.aliyuncs.com。关于其他地域对应的Endpoint填写方法,请参见访问域名和数据中心

      2. 确认AccessKey ID与AccessKey Secret是否填写正确。

        AccessKey ID与AccessKey Secret前后不能存在空格。

      3. 确认BucketName与ObjectKey符合命名要求。
        • BucketName的命名规则如下:
          • Bucket名称在OSS范围内必须全局唯一。
          • 只能包括小写字母、数字和短划线(-)。
          • 必须以小写字母或者数字开头和结尾。
          • 长度为3~63个字符。
        • ObjectKey的命令规则如下:
          • 使用UTF-8编码。
          • 长度必须在1~1023字符之间。
          • 不能以正斜线(/)或者反斜线(\)开头。
          • 区分大小写。
      4. 检查签名方法。
        • 如果您是自己实现的签名且您的业务环境适合使用SDK,请参考OSS SDK提供的签名方法完成签名。更多信息,请参见使用阿里云SDK发起请求概述
        • 如果您是自己实现的签名且您的业务环境不适合使用SDK,您需要手动编写代码计算签名并将签名添加到REST API请求中。更多信息,请参见使用REST API发起请求
      5. 确认使用的代理中是否添加额外的Header。
  • 自己实现签名。

  • 自己实现签名过程中,如果服务端在响应中返回了StringToSign字符串,可以查看服务端的待签字符串与您签名前的待签字符串是否一致。

  • 本页导读 (1)
文档反馈