Forum Discussion

mfj's avatar
mfj
New Contributor
2 years ago
Solved

CORS error when trying to access a protected resource

I use a docker container to run swagger-ui.  Upon customizing the 

SWAGGER_JSON_URL

to my the server running the API (FYI: I am using dependency-track) I am able to retrieve the swagger.json and after authorizing with an x-api-key, if I try to access an API that does not require authentication the CORS headers (access-control-allowed=*) are setup correctly and everything works.

When I try an API that requires authentication, then the browser will do a prefetch OPTIONS with has all of the correct headers.  However, the browser will block with API call with the following error:

 

from origin 'localhost' has been blocked by CORS policy: Cannot parse the Access-Control-Allow-Methods response header field in preflight response.

 

The allow methods header in the preflight are valid.

 

I tried to start the container with the WITH_CREDENTIALS environment variable and I get the same error.  I get the same error when I try to run swagger-ui using the standalone method modifying the dist/swagger-initializer.js to point to the correct url.  I think that something needs to be configured in swagger-ui so that the call to the protected API goes through.  I cannot blame the API server because it does not even receive the API call (just the prefetch) as the browser blocks it.

 

This happens with Version 109.0.5414.75 (Official Build) (64-bit) of chrome and version Version 108.0.1462.54 (Official build) (64-bit) of Microsoft Edge.  Those two are very recent version of their respective browsers.

  • I found out the problem.  The Access-Control-Allow-Methods returned from the API server prefetch request used spaces instead of comma to separate the methods...Argggg.  After correcting everything is working fine.

1 Reply

  • mfj's avatar
    mfj
    New Contributor

    I found out the problem.  The Access-Control-Allow-Methods returned from the API server prefetch request used spaces instead of comma to separate the methods...Argggg.  After correcting everything is working fine.