Skip to main content

Beginner's Guide to CORS

00:05:18:60

Are you a web developer who has experienced the pure frustration of CORS errors? If you're not familiar, CORS (or Cross-Origin Resource Sharing) is like that one annoying friend who always tries to ruin your fun by preventing your web page from making requests to a different domain. On the surface, CORS seems helpful - it's all about protecting web users from malicious attacks and keeping sensitive data under wraps. But as a web developer, you know firsthand how annoying it can be to deal with CORS when you're trying to build a web page that needs to make requests to multiple servers. It's easy to feel like CORS is out to get you, especially when you're on a tight deadline and just want to get your project finished. But despite the annoyance, CORS is a necessary security measure that we can't ignore. In this article, we'll delve into the world of CORS and explore ways to work around those pesky CORS issues.

What is CORS?

CORS is a security feature implemented by web browsers that blocks web pages from making requests to a different domain than the one that served the web page. It helps to prevent malicious websites from making unauthorized requests to a server on behalf of a user. For example, if a user visits a malicious website that contains a script that makes a request to a bank's server, the browser will block the request because the malicious website is not the same domain as the bank's server. This prevents the malicious website from stealing the user's bank account information.

In short, CORS is a security feature implemented by web browsers that blocks web pages from making requests to a different domain than the one that served the web page.

Server Codes for Private Files

It allows a server to specify which domains are allowed to make requests to it, using the Access-Control-Allow-Origin HTTP header. When a web page from a different domain makes a request to the server, the server can include this header in its response to indicate that the web page is allowed to make the request. If the header is not present, or if it specifies a different domain, the web browser will block the request.

Even though it is a useful security feature, it can also be a source of frustration for developers, because it can block legitimate requests that a web page is intended to make. If you are developing a web page and you are having trouble making requests to a server because of CORS, you may need to adjust the server’s CORS configuration or use a workaround such as a CORS proxy.

There are a few ways that you can circumvent the same-origin policy and CORS restrictions, if you aren’t the owner of the server, although it is generally not recommended to do so. Here are a few options:

  • Use a CORS proxy: You can use a CORS proxy to bypass the same-origin policy and CORS restrictions. A CORS proxy is a server that acts as an intermediary between your web page and the server that you want to make a request to. When you make a request to the CORS proxy, it makes the request to the server on your behalf, and then it returns the response back to you. This allows you to bypass the same-origin policy and CORS restrictions, because the CORS proxy is in the same domain as your web page, and it is the CORS proxy that is making the request to the server, not your web page.

  • Enable CORS on the server: If you have access to the server that you want to make a request to, you can enable CORS on the server by adding the Access-Control-Allow-Origin header to the server’s responses. This will allow your web page to make requests to the server, regardless of the domain that the web page is served from.

  • Use JSONP: JSONP (JSON with Padding) is a technique that allows you to make cross-origin requests by exploiting the fact that web browsers will execute any script that they receive, regardless of its origin. To use JSONP, you need to create a (script) element on your web page, and set its src attribute to the URL of the server that you want to make a request to. The server will then return a response that is wrapped in a JavaScript function call, which will be executed by the browser when the script is loaded. This allows you to bypass the same-origin policy and CORS restrictions, because the browser will execute the script even if it is served from a different domain.

  • Use a browser extension: Some browser extensions, such as CORS Everywhere for Firefox, allow you to bypass the same-origin policy and CORS restrictions by modifying the HTTP headers of your requests to include the Origin header and the Access-Control-Allow-Origin header. This can be a convenient way to bypass CORS restrictions while you are developing and testing your web page, but it is not a secure solution and should not be used in a production environment.

It is important to note that these methods should be used with caution, and only as a last resort. CORS and the same-origin policy are important security measures that protect web users from malicious attacks and protect sensitive data from being exposed. Bypassing these measures can potentially expose your web page and your users to security risks.

In this article we basically showed you what not to do. If you want to step further and interested in tips and tricks about working CORS, we will be soon publishing another article where we share our experiences working with CORS. Follow us, so we can keep you posted. Besides we are publishing articles on a daily basis about web development and software development in general. Don’t miss out any of those in order to keep you ahead of the curve.

Have you encountered CORS in your work before? What was the situation and how did you resolve it? Share your experience. We are eager to know and encourage each other to share our experiences in order for all of us to grow.

In case you want to read more about Startups, Firebase, and Tech in general, feel free to follow me on my social channels: Instagram, Twitter, and LinkedIn.