CORS error in C#
curl doesn't enforce CORS. Fetch and Axios do. A working curl doesn't mean a working browser call. Paste your curl command to see what C# (HttpClient) would send and compare against the working request.
Quick answer
To convert a cURL command to C#, paste it into the Toolpaper workbench below. It parses the command in your browser and emits idiomatic C# code — headers, query string, request body, authentication (Bearer, Basic, API key), and cookies are all wired up automatically. No data is uploaded; conversion is fully client-side.
Prefer a different target? See the full cURL to C# reference, or jump to the same guide in JavaScript, Node.js, or Python.
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Text;
using System.Threading.Tasks;
class Program {
static async Task Main() {
using var handler = new HttpClientHandler { AllowAutoRedirect = false };
using var client = new HttpClient(handler);
using var request = new HttpRequestMessage(new HttpMethod("GET"), "https://api.example.com/me");
request.Headers.TryAddWithoutValidation("Authorization", "Bearer YOUR_TOKEN");
using var response = await client.SendAsync(request);
var text = await response.Content.ReadAsStringAsync();
Console.WriteLine(text);
}
}Example
A representative curl command for this scenario. Paste your own above to convert an exact match.
curl https://api.example.com/me \
-H "Authorization: Bearer YOUR_TOKEN"Implementation notes
- Move the call server-side, or ask the API to add your origin to Access-Control-Allow-Origin. The In-browser Runner surfaces CORS blockers explicitly.
- Use the Explain panel to enumerate exactly which headers, cookies, and TLS flags the curl request carries.
- The In-browser Runner is a fast way to confirm whether the failure reproduces from the browser or only from the server.
Common mistakes
- Comparing curl and C# without capturing both actual wire requests — mitmproxy or Charles pays off here.
- Assuming a working curl means the API is happy — client differences (redirect handling, keep-alive, HTTP/2) surface as edge cases.
- Silencing warnings instead of fixing them — every C# client has a way to log the outgoing request; turn it on.
Common questions
- Why does curl work but C# fail?
- Usually a header curl adds by default is missing in C#, or vice versa. Paste the curl above to see a normalized breakdown.
- Is my request sent to Toolpaper?
- No. Parsing and diffing run in your browser.
More guides in C#
C# hub →The same guide in other languages
All guides →Full C# reference on the cURL to C# hub, or open the main converter for all 18 targets.