If an opaque response serves your needs
It doesn’t. You want to see the response. You can’t see an opaque response (that is what opaque response means).
no-cors
mode means that if the browser has to do anything that requires permission from CORS, it will fail silently instead of throwing an error.
So it is silently failing to get the response, then trying to parse that nothing as JSON (which throws a different error).
You need:
- To not use
no-cors
mode - The server to grant permission using CORS
See this question for more information about CORS in general.