Cannot load admin-ajax.php. No access-control allow origin*

I cannot load admin-ajax.php and I keep getting this error message:

XMLHttpRequest cannot load …./wp-admin/admin-ajax.php.,. No
‘Access-Control-Allow-Origin’ header is present on…

On local WAMP it worked just to add this:

header("Access-Control-Allow-Origin: *"); 

(Even if this seems very stupid because next time WordPress updates I guess this would disappear.)

When I upload this to my production server it’s still the same message:

XMLHttpRequest cannot load …./wp-admin/admin-ajax.php.,. No
‘Access-Control-Allow-Origin’ header is present on…

I’ve tried to modify the .htaccess file and that seemed to activate CORS, but that won’t affect admin-ajax.php:

<IfModule mod_headers.c>
   Header add Access-Control-Allow-Origin: *
</IfModule>

I’ve also tried to install WP-CORS plugin without success.

2 Answers
2

There are filters for allowed_http_origins and add_allowed_origins.
You can use them to set the proper Access-Control-Allow-Origin header in the response to your AJAX call.

Add this to your theme’s functions.php file:

add_filter('allowed_http_origins', 'add_allowed_origins');

function add_allowed_origins($origins) {
    $origins[] = 'https://www.yourdomain.com';
    return $origins;
}

Leave a Comment