there is the website https://cebcare.ceb.lk/Incognito/DemandMgmtSchedule and in there I can see an API call to https://cebcare.ceb.lk/Incognito/GetLoadSheddingEvents with StartTime
and EndTime
as form data.
I tried to send post request to above endpoint in Node.js using axios but I get the error AxiosError: unable to verify the first certificate
and code: 'UNABLE_TO_VERIFY_LEAF_SIGNATURE'
Then I saw that there are 2 Headers RequestVerificationToken
and Cookie
. I grabbed them and did a Postman request and got back a response with 200. But in Node.js when I do like
const data = {
StartTime: startDate,
EndTime: endDate
}
const response = await axios.post(URL, data,{
'Content-Type':'multipart/form-data',
Cookie: '.AspNetCore.Antiforgery.ThOcTlhnrMo=CfDJ8Nr2EC612OFAjHvozOYXtlRQE9n05fuSOD0jEvKY0unmx8QyMYxdCfmotrhzVIKzurnhpkY_MtfAP9cmpR11u8rzt7_xz4IkuWMURwfelg7ymSJ8GaksLVwEgbMIkEDfrvjb5II6EzzTaLA5RiXRDXU',
RequestVerificationToken: 'CfDJ8Nr2EC612OFAjHvozOYXtlRBtAUjb36TUpOhI0yuLADjcckB_h1xKJWHDwl0MrqyE4_4pU_YXUkeh5uI66UBXedMcMmihENJ5hpfW_vBgNWZJ-JtliiE4UYvxNJCvvhmGvIWSKWeeqx-llCxrPio9Tw'
});
I get the same error as above
Is there a way to fix this. Or somehow bypass the Cookie
and RequestVerificationToken
. Or can I hardcode these 2 values and send request?
EDIT I did the following after looking at the linked post
const httpsAgent = new https.Agent({ rejectUnauthorized: false });
const response = await axios.post(URL, data,{
httpsAgent,
'Content-Type':'multipart/form-data',
Cookie: '.AspNetCore.Antiforgery.ThOcTlhnrMo=CfDJ8Nr2EC612OFAjHvozOYXtlRQE9n05fuSOD0jEvKY0unmx8QyMYxdCfmotrhzVIKzurnhpkY_MtfAP9cmpR11u8rzt7_xz4IkuWMURwfelg7ymSJ8GaksLVwEgbMIkEDfrvjb5II6EzzTaLA5RiXRDXU',
RequestVerificationToken: 'CfDJ8Nr2EC612OFAjHvozOYXtlRBtAUjb36TUpOhI0yuLADjcckB_h1xKJWHDwl0MrqyE4_4pU_YXUkeh5uI66UBXedMcMmihENJ5hpfW_vBgNWZJ-JtliiE4UYvxNJCvvhmGvIWSKWeeqx-llCxrPio9Tw'
});
but now I'm getting Bad Request 400. But in postman Im getting the results for the same Cookie
and RequestVerificationToken
CodePudding user response:
The third parameter of the axios post function takes an "Options" object - as for your case to pass the headers you should write like this:
{
headers: {
'Content-Type:'multipart/form-data',
Cookie: "",
RequestVerificationToken: ""
}
}