setRequestHeader not working in jQuery .ajax()

Using the jQuery ajax() call below is not working. If I remove the beforeSend parameter it works fine. According to Chrome web inspector, its status when not working is "Load Cancelled". Tested with jQuery 1.7.2 and 1.9.1 and Chrome, Safari and Firefox. Fails regardless of what parameters I put in setRequestHeader (for example "test" , "true" also fails). When I include beforeSend the following is included in the request header : Access-Control-Request-Headers:accept, cache-control, origin .If it matters, api_url is on a different subdomain, but we set up CORS on the server so it works fine in all other instances. I need to set the Cache-Control header so removing before Send is not an option.

$.ajax({
    url: api_url, 
    beforeSend : function (xhr){xhr.setRequestHeader('Cache-Control', "public");} , 
    dataType: "json", 
    success: successCallback, 
    error: APIError 
});

update : it seems to be reaching the node.js server, since it responds with 200 as status. Is it possible the problem is how the server is responding to the header? Again, it does this no matter what key/value parameters I use so it wouldn't be caching related.

update2 : in my console I am getting "Request header field Cache-Control is not allowed by Access-Control-Allow-Headers". I tried Googling that but am not any closer to an answer. It doesn't seem that any request header field is accepted. Does that mean node.js has to be configured to accept the header?