WooCommerce: koppeling mislukt door Authorization header (401 woocommerce_rest_cannot_view)
Problemen met de koppeling van WooCommerce terwijl de REST API zelf wél werkt? Dit artikel beschrijft een specifieke oorzaak van de 401-fout waarbij de API-sleutels correct zijn, maar de verbinding toch mislukt.
Foutmelding: "401 woocommerce_rest_cannot_view" terwijl de REST API wél werkt
- Vertaling: Je kunt deze gegevensbron niet bekijken.
- Oorzaak: De Authorization header wordt door de webserver (Apache) onderweg gestript voordat WooCommerce deze ontvangt. Hierdoor ziet WooCommerce geen geldige authenticatie, ook al zijn de API-sleutels correct aangemaakt. Dit is te herkennen doordat een handmatige aanroep mét de sleutels in de URL wél werkt (
?consumer_key=...&consumer_secret=...), maar de koppeling via GoedGepickt (die gebruikmaakt van Basic Auth via de Authorization header) niet. - Oplossing: Voeg de volgende regel toe aan het
.htaccess-bestand van de WordPress-installatie:
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]Plaats deze regel direct onder RewriteEngine On, zowel in het Multisite-gedeelte als in het WordPress rewrite-blok (als beide aanwezig zijn).
Voer daarna de volgende stappen uit:
- Verwijder de bestaande WooCommerce REST API-sleutels
- Maak nieuwe API-sleutels aan met Lezen/Schrijven-rechten
- Leeg de cache van de website
- Sla de permalinks opnieuw op via WordPress > Instellingen > Permalinks > Opslaan
- Leg de koppeling in GoedGepickt opnieuw handmatig aan
De koppeling zou nu correct moeten werken.
Hoe weet je of dit de oorzaak is?
Dit probleem is herkenbaar aan de volgende combinatie:
- De foutmelding is
401 woocommerce_rest_cannot_view - Een handmatige test via de browser mét
consumer_keyenconsumer_secretin de URL geeft wél correct productdata terug - Nieuwe API-sleutels aanmaken, permalinks opslaan en de koppeling opnieuw aanmaken hebben geen effect gehad
Is dat het geval? Dan is de Authorization header waarschijnlijk de oorzaak.
Let op: mogelijke andere oorzaak
Sommige plug-ins, zoals Jetpack, hebben eigen middleware die HTTP-headers kan filteren. Schakel Jetpack tijdelijk uit en test de koppeling opnieuw. Als de koppeling dan wel werkt, zit het probleem in de plug-in-configuratie en niet in de webserver.
Vragen?
Kom je er niet uit? Neem dan contact met ons op, wij helpen je graag.