7
votes

I am trying azure function (nodejs) with google authentication from a client side javascript app. I have set up CORS for the correct URL(i.e. http://localhost:8080). But I am still getting the following error:

Credentials flag is 'true', but the 'Access-Control-Allow-Credentials' header is ''. It must be 'true' to allow credentials. Origin 'http://localhost:8080' is therefore not allowed access.

I have tried everywhere on the internet and spent few days to get the answers myself. It seems Azure http response needs to add this Access-Control-Allow-Credentials:true in the header. Is there a way to add custom headers?

Any help will be greatly appreciated.

2
Are you using nodejs ?Thomas
@Thomas, yes nodejs at server side and javascript fetch at client side.Sofa Gum

2 Answers

6
votes

In a Node function you can specify additional headers as follows:

module.exports = function (context, req) {
    context.res = {
        status: 200,
        body: "Hello " + req.query.name,
        headers: {
            'Content-Type': 'text/plain',
            'MyCustomHeader': 'Testing'
        }
    };
    context.done();
}
2
votes

I have finally managed to get around the issue. The trick is to remove all the CORS entries from Azure Functions app and handle it directly in your code.

Thanks to the tip shared in another stackoverflow issue regarding azure app service, which worked for azure functions as well.

More details regarding the work around are at:

github issue #620