Solution for CORS Error: CORSMultipleAllowOriginNotAllowed

fix cors multiple allow origin not allowed http error guide
10 November 2024

Understanding CORS Error

Have you ever encountered a CORS error? This error can occur when sending HTTP requests from one origin to another. Specifically, the CORSMultipleAllowOriginNotAllowed error happens when your server returns multiple values in the Access-Control-Allow-Origin header, while this header should only contain a single value (or *). This situation can confuse developers, but with some time and attention, it can be resolved.

CORSMultipleAllowOriginNotAllowed Error

In some cases, it may be due to improper settings or incorrect configurations on your server, leading to multiple values for the Access-Control-Allow-Origin header being sent. The HTTP server must check whether the requesting origin is in the list of allowed origins, or if there’s a value allowed, it should only return one allowed value in the Access-Control-Allow-Origin header, not more.

Solution for the Error

To resolve this issue, first ensure that access control is appropriately and correctly configured for the allowed origins. This includes limiting the origins, as well as addressing incorrect configurations in server files, which can occur. Typically, servers like Apache or Nginx can identify these configurations. For example, in Nginx, you can use the directive add_header to manage this.

Code Example

server {
listen 80;
server_name example.com;

location / {
if ($http_origin ~* "(http://example1.com|http://example2.com)") {
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
}
}
}

Code Explanation

server {
This defines a block for configuring a server in Nginx.
listen 80;
This listens on port 80 for HTTP requests.
server_name example.com;
This is the domain name for this server configuration.
location / {
This defines a block for routing requests to the specified path.
if ($http_origin ~* "(http://example1.com|http://example2.com)") {
This checks whether the origin of the request matches the allowed origins.
add_header 'Access-Control-Allow-Origin' "$http_origin" always;
This adds an allowed origin in CORS based on the request origin if it is permitted.
}

FAQ

?

Why should the Access-Control-Allow-Origin header have only one value?

?

How can I define allowed origins in Nginx?

?

Can I allow all requests?