Cross-Origin Resource Sharing (CORS) is an essential security feature for modern web applications, allowing web browsers to request resources from different domains securely. By default, web browsers enforce the same-origin policy, which prevents web pages from making requests to a different domain than the one that served the web page. However, sometimes it is necessary to allow cross-origin requests for web applications to function correctly.

Advertisement

In this article, we will guide you through enabling CORS in Apache, a widely-used web server, to allow cross-origin requests for your web applications.

Step 1: Enable Apache Headers Module

To enable CORS in Apache, you need to use the Apache headers module. If it is not already installed and enabled, you can do so by running the following commands:

  • For Ubuntu/Debian-based systems:
    sudo apt-get install libapache2-mod-headers 
    sudo a2enmod headers 
    
  • For CentOS/RHEL-based systems:
    sudo yum install httpd-devel 
    

After installing and enabling the headers module, restart the Apache service:

sudo service apache2 restart 

Step 2: Configure CORS in Apache

To configure CORS in Apache, you need to add the necessary headers to your Apache configuration file. You can either modify the global configuration file (usually located at /etc/apache2/apache2.conf or /etc/httpd/conf/httpd.conf) or the virtual host configuration file for a specific domain.

Add the following lines to the configuration file, adjusting the Header set Access-Control-Allow-Origin directive to match your specific requirements:


<IfModule mod_headers.c>
    Header always set Access-Control-Allow-Origin "*"
    Header always set Access-Control-Allow-Methods "GET,POST,PUT,DELETE,OPTIONS"
    Header always set Access-Control-Allow-Headers "Content-Type,Authorization,X-Requested-With"
    Header always set Access-Control-Allow-Credentials "true"
</IfModule>

The Access-Control-Allow-Origin directive specifies which domains are allowed to make cross-origin requests. To allow any domain, use “*”; otherwise, replace “*” with the specific domain you want to allow.

Step 3: Restart the Apache Service

After adding the CORS configuration to your Apache configuration file, save the changes and restart the Apache service to apply the new settings:

sudo service apache2 restart 

Step 4: Test Your CORS Configuration

To verify that your Apache CORS configuration is working correctly, you can use an online CORS testing tool like CORS Fetch Client or create a simple HTML page with JavaScript to make cross-origin requests to your server.

If your configuration is correct, the cross-origin requests should succeed without any errors.

Conclusion

Enabling CORS in Apache is crucial for web applications that need to make cross-origin requests while maintaining security. By following these simple steps, you can configure your Apache server to allow cross-origin requests and ensure a seamless experience for your web application users. Remember to test your configuration and adjust the Access-Control-Allow-Origin directive as needed to match your specific requirements. With this knowledge, you can optimize your Apache server for modern web application development and enhance your web application security.

Share.

1 Comment

  1. Thanks for this – was having real issues serving an API to an angular SPI due to cross domain. Many solutions offer allow-origin “*” but this doesn’t work as angular sends credentials (can’t have allow-credentials with origin “*”)

    One issue – for me the $0 argument is always null. I made a work around with multiple lines and hard coding each assignment, but your version is more elegant.

    $0 looks like an parameter variable but I can’t find any information about using these in this context.

    Could you help point me to where can I find out information about this?

    Thanks

Leave A Reply

Exit mobile version