you were both right (of course!), it was just very difficult for me to filter out all my misunderstandings.
I finally got it working.
Quite a simple noob-concept that's actually quite hard to formulate into a question.
So answer here is just for anyone that comes across this thread looking for the same answers i was.
afaik the vue code i wrote is frontend-only code. it is executed within the browser by the browser's engine (e.g. v8 in chrome).
in my frontend-only config, there is no nodejs server running any code.
so the vue code running in the user's browser talks directly to my backend api.
(since i last looked, now people are doing backend rendering and shifting more work to an actual nodejs-based server, but it appears i have none of that in my code).
my first misunderstanding was that i thought for the kerberos/spnego handshake,
i had to write frontend code to be the middleman between my API server and the browser (
like i saw in this thread).
but what i found out was that if the backend sends a correctly-formed response to the browser, then the browser (not the frontend code!) will automatically reply with the kerberos token!
the second misunderstanding was that i thought:
* that development nodejs server was running some code for me (i.e. that everything was NOT running in the browser)
* that the development nodejs server was the owner of the kerberos SPN
as a result i was sending queries from the browser to the API server with destination IP
http://127.0.0.1:7777
The problem here was that the API server should be the "owner" of the kerberos SPN and so it was essential that requests to the API were done with the URL contained within the SPN..
once i changed the two misunderstandings above then it worked fine.
many thanks again!