Reputation: 629
I am trying to send a GET request from my angular app to my .NET Core WebAPI backend. Both are running on localhost. Angular is running on port 4200, WebAPI is running on port 5001. When I make the GET request in Angular, the following error is shown in console:
After searching online, almost every answer comes down to an issue with CORS not being enabled correctly on the backend server. However, to my knowledge, I have CORS setup correctly. Here is my configuration for CORS:
This is the service function in Angular as well as the GET method in WebAPI:
I know the URL is correct, because, when I copy the URL into Postman, it works as intended.
Mainly I'm wondering if I did mess up CORS, because that seems to be the main issue with this error message, or if there is something else I may have missed.
EDIT (Solution):
Ok, so through various trials and errors, I believe I have found the issue. When I made the initial project, I made the project in JetBrains Rider. I decided to try making a new project in Visual Studio to see what would happen, however, the problem still remained. As it turns out the issue was not with CORS, but with an invalid HTTPS localhost certificate. When I tried to run the console command dotnet dev-certs https --trust
I did not get a popup to confirm the certificate, but instead just a generic error message that was not useful. Here is how I fixed the issue (whether or not this is the right way can be for discussion).
Upvotes: 8
Views: 5971
Reputation: 782
It is likely that your Angular app is sending requests to the wrong port.
Consult your environment.ts and or environment.prod.ts files within your angular project (if this is where you've defined your backend URLs).
Make sure the URL and port match those of the .NET app.
Alternatively, you can change the URL from your backend/.NET core app to match those found in your angular project.
Happy coding!
Upvotes: 0
Reputation: 1511
I encountered the same problem but it was not related to the certificate.
Simply, just omit HTTPS redirection from the configure method on startup.cs
did the trick for me.
app.UseHttpsRedirection();
Then, you should set your Angular application to send the requests to the HTTP
protocol instead. The default should be: http://localhost:5000
.
Alternatively, you can wrap the HTTPS redirection in isProduction
check in order to not forget to bring it back for the deployment.
if(env.IsProduction()) {
app.UseHttpsRedirection();
}
Upvotes: 0
Reputation: 629
Ok, so through various trials and errors, I believe I have found the issue. When I made the initial project, I made the project in JetBrains Rider. I decided to try making a new project in Visual Studio to see what would happen, however, the problem still remained. As it turns out the issue was not with CORS, but with an invalid HTTPS localhost certificate. When I tried to run the console command dotnet dev-certs https --trust
I did not get a popup to confirm the certificate, but instead just a generic error message that was not useful. Here is how I fixed the issue (whether or not this is the right way can be for discussion).
This is the error I was getting when running dotnet dev-certs https --trust
for reference:
Upvotes: 4