Woocommerce rest api неверная подпись (ошибка 401) в почтовом запросе

Я работаю над проектом Ionic 2 для магазина woocommerce. Я использую REST API Woocommerce в своем приложении и для тестирования API с помощью OAuth-1.0 с использованием приложения Postman Chrome. Я получаю правильные ответы с запросами GET, но для запросов POST я получаю ошибку несоответствия подписи, например:

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

person rmalviya    schedule 25.02.2017    source источник


Ответы (1)


Я боролся с этим несколько дней (используя angular) и, наконец, понял, что это проблема 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"

Вы можете обратиться к этот ответ для подробного объяснения

person David Quagraine    schedule 06.09.2017
comment
Чтобы уточнить (пожалуйста, поправьте меня, если я ошибаюсь): RewriteCond и RewriteRule в основном возвращают HTTP 200 для каждого запроса OPTIONS. Браузер (по крайней мере, в среде HTTPS) выполняет вызов OPTIONS перед каждым вызовом GET/POST/etc. Если это возвращает 200, ему разрешено выполнять фактический вызов. - person Jeff Huijsmans; 06.09.2017