Use CORS to allow cross-origin access.
CORS is a part of HTTP that lets servers specify any other hosts
from which a browser should permit loading of content.
How to block cross-origin access
To prevent cross-origin writes,
check an unguessable token in the request — known as a Cross-Site Request Forgery (CSRF) token.
prevent cross-origin reads of pages that require this token.
To prevent cross-origin reads of a resource,
ensure that it is not embeddable.
prevent embedding because embedding a resource always leaks some information about it.
To prevent cross-origin embeds,
ensure that your resource cannot be interpreted
Browsers may not respect the Content-Type header.
For example, if you point a <script> tag at an HTML document, the browser will try to parse the HTML as JavaScript. When your resource is not an entry point to your site, you can also use a CSRF token to prevent embedding.
//Example
app.UseCors(x => x.AllowAnyHeader().AllowAnyMethod().WithOrigins("https://localhost:4200"));
CORS => (Cross-Origin Resource Sharing)
sharing resources between different sources
There is this thing called CORS which stands for Cross Origin Resource Sharing. The page where swagger documentation is shown is fetched from our servers, but the swagger UI also needs to make calls to the server where the REST API is. This is a potential security risk, so browser wants to ask permission from the REST API server if it’s ok to use those resources (i.e. try out the API thru web UI swagger documentation)
If you want to make anything except a simple GET or there are any custom headers, the browser wants to make a preflight query to the back end. Browser wants to know if it’s ok to ask whatever it actually wants to ask. So the browser sends an OPTIONS method query to the back end passing along all the headers that the actual request will need. Sounds simple enough (yeah OK, it took me some time until I figured it out. I’m a bit slow) what can go wrong?