# HttpClient auf eigene API liefert 401 / "Missing Authorization header"

**URL:** https://forum.shopware.com/t/httpclient-auf-eigene-api-liefert-401-missing-authorization-header/65269
**Category:** Programmierung
**Created:** [5. März 2020 um 15:42 UTC](https://forum.shopware.com/t/httpclient-auf-eigene-api-liefert-401-missing-authorization-header/65269 "2020-03-05T15:42:13Z")
**Posts on this page:** 5
**Page:** 1

<div class="post-metadata">

### Author: ![ansgar](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/ansgar/32/7871_2.png) [@ansgar](https://forum.shopware.com/u/ansgar)
#### Post date: [5. März 2020 um 15:42 UTC](https://forum.shopware.com/t/httpclient-auf-eigene-api-liefert-401-missing-authorization-header/65269/1 "2020-03-05T15:42:13Z")

</div>

Ich hätte gedacht dass der HttpClient den nötigen BearerToken automatisch erzeugt, aber das scheint nicht der Fall zu sein. Hier meine “custom/plugins/MeinPlugin/src/Resources/app/storefront/src/main.js”:

```
import HttpClient from 'src/service/http-client.service';

var loadEnd = function(responseText) {
    console.log(responseText);
};

var httpClient = new HttpClient(window.accessKey, window.contextToken);
httpClient.post('/api/v1/myvendor/myaction', null, loadEnd);

```

Der Request enthält zwar die beiden Kopfzeilen “sw-access-key” und “sw-context-token”, bekommt dann aber die Antwort “401 Unauthorized” bzw. im JSON so etwas:

![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/c/c0e553b630feffd475a681144e9da7705071de28.png)

Lässt sich über JS die Authentifizierung überhaupt realisieren?

Grüße, Ansgar

---

<div class="post-metadata">

### Author: ![ansgar](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/ansgar/32/7871_2.png) [@ansgar](https://forum.shopware.com/u/ansgar)
#### Post date: [9. März 2020 um 11:01 UTC](https://forum.shopware.com/t/httpclient-auf-eigene-api-liefert-401-missing-authorization-header/65269/2 "2020-03-09T11:01:22Z")

</div>

Um meine Frage selbst zu beantworten - ich kann im Frontend wohl besser die Sales Channel API verwenden, die gar keine Authentifizierung benötigt. Damit funktioniert der JS Code von oben ohne weiteres. Im Controller musste ich nur die Route anders setzen:

```
connection = $connection;
    }

    /**
     * @Route("/sales-channel-api/v{version}/myvendor/myaction", name="sales-channel-api.action.myvendor.myaction", methods={"POST"})
     * @param Request $request
     * @param Context $context
     * @return JsonResponse
     * @throws \Doctrine\DBAL\DBALException
     */
    public function myaction(Request $request, Context $context): JsonResponse
    {
        // do something
        $cart = $this->connection->fetchAssoc("select token, name, price, created_at from cart order by rand() limit 1");
        return new JsonResponse([$cart['created_at'], $cart['price']]);
    }

}

```

&nbsp;

---

<div class="post-metadata">

### Author: ![rammi22](https://avatars.discourse-cdn.com/v4/letter/r/258eb7/32.png) [@rammi22](https://forum.shopware.com/u/rammi22)
#### Post date: [8. September 2020 um 12:35 UTC](https://forum.shopware.com/t/httpclient-auf-eigene-api-liefert-401-missing-authorization-header/65269/3 "2020-09-08T12:35:24Z")

</div>

> [@ansgar schrieb:](https://forum.shopware.com/profile/34259/ansgar "ansgar")
> 
> Ich hätte gedacht dass der HttpClient den nötigen BearerToken automatisch erzeugt…
> 
> Grüße, Ansgar

Da eine _aussagekräftige Dokumentation_ zum **Bearer Token Access** fehlt und damit das für andere Kollegen eventuell auch intreressant wäre, gebe ich mein Wissen zum Besten:  
&nbsp;

```
Component.register('mycomponent', {
    ...
    inject: [
        'loginService'
    ],
    
    methods: {       
       getBearerToken() {
          return this.loginService.getToken();
       }
    }
}

```

&nbsp;

---

<div class="post-metadata">

### Author: ![shyim](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/shyim/32/7681_2.png) [@shyim](https://forum.shopware.com/u/shyim)
#### Post date: [8. September 2020 um 16:18 UTC](https://forum.shopware.com/t/httpclient-auf-eigene-api-liefert-401-missing-authorization-header/65269/4 "2020-09-08T16:18:01Z")

</div>

Das sind komplett andere Bereiche das eine ist Frontend deins ist Admin. Du solltest einen eigenen Service anlegen und dort dann die getBasicHeaders methode verwenden.&nbsp; Und diesen dann injecten

---

<div class="post-metadata">

### Author: ![rammi22](https://avatars.discourse-cdn.com/v4/letter/r/258eb7/32.png) [@rammi22](https://forum.shopware.com/u/rammi22)
#### Post date: [10. September 2020 um 14:44 UTC](https://forum.shopware.com/t/httpclient-auf-eigene-api-liefert-401-missing-authorization-header/65269/5 "2020-09-10T14:44:10Z")

</div>

> [@Shyim schrieb:](https://forum.shopware.com/profile/20792/Shyim "Shyim")
> 
> Das sind komplett andere Bereiche das eine ist Frontend deins ist Admin.

Na dann ist das ja geklärt, …nach 6 Monaten&nbsp; ![Undecided](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/8ae622c50104e84c5003fedfcc22572813a67b41.png "Undecided")
