3

我正在为 woocommerce 商店开发 Ionic 2 项目。我在我的应用程序中使用Woocommerce REST API并使用Postman Chrome App使用 OAuth-1.0 测试 API 。我通过 GET 请求得到了正确的响应,但对于 POST 请求,我收到了签名不匹配的错误,如:

{
  "code": "woocommerce_rest_authentication_error",
  "message": "Invalid Signature - provided signature does not match.",
  "data": {
    "status": 401
  }
}
4

1 回答 1

2

我为此苦苦挣扎了几天(使用角度),最后发现这是一个 CORS 问题。浏览器实际上发送了一个 OPTIONS 请求,woocommerce-api 将其作为 GET 接收。使用此工具有助于进行故障排除。

最后通过如下设置我的 .htaccess 来解决它;

RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule ^(.*)$ $1 [R=200,L,E=HTTP_ORIGIN:%{HTTP:ORIGIN}]]
Header set Access-Control-Allow-Origin "*"
Header always set Access-Control-Allow-Credentials "true"
Header always set Access-Control-Max-Age "1000"
Header always set Access-Control-Allow-Headers "X-Requested-With, Content-Type, Origin, Authorization, Accept, Client-Security-Token, Accept-Encoding"
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"

详细解释可以参考这个答案

于 2017-09-06T09:52:10.313 回答