I'm working on a chrome devtools panels extension. In it I have:
const toDbBtn = document.getElementById("toDbBtn");
toDbBtn.addEventListener("click", async () => {
const dbName = document.getElementById("textBox").value;
// const result = await chrome.storage.local.get(["yourKey"]);
const storedJSON = await chrome.storage.local.get(["yourKey"]);
console.log("Result from storage:", storedJSON);
if (storedJSON.yourKey) {
const parsedArray = JSON.parse(storedJSON.yourKey);
console.log("Parsed Array:", parsedArray);
const partArray = parsedArray.slice(0, 30);
console.log("partArray", partArray);
const data = {
dbName: dbName,
savedArray: partArray,
};
const postable = JSON.stringify(data);
console.log("postable", postable);
// http://localhost:8888/.netlify/functions//updateCollection.js
const response = await fetch(
"http://localhost:8888/.netlify/functions/updateCollection",
{
method: "POST",
headers: {
"Content-Type": "application/json",
// "Access-Control-Allow-Origin": "*",
// "Access-Control-Allow-Methods": "POST",
// "Access-Control-Allow-Headers": "Content-Type",
},
body: postable,
}
);
const result = await response.json();
console.log("Response from server:", result);
} else {
console.log("Value not found in storage for key: yourKey");
}
});
I'm planning to send some data to a netlify function, and so decided to test locally using "NTL DEV" command.
my target function is:
const headers = {
"Cache-Control": "no-cache",
"Cross-Origin-Opener-Policy": "unsafe-none",
"Cross-Origin-Embedder-Policy": "unsafe-none",
"Access-Control-Allow-Origin": "*",
"Access-Control-Allow-Private-Network": "true",
"Access-Control-Allow-Headers": "Access-Control-Request-Private-Network",
"Access-Control-Allow-Methods": "OPTIONS,POST,GET,HEAD,QUERY,query",
};
exports.handler = async function (event, context) {
console.log("context: ", context);
console.log("event: ", event);
if (event.httpMethod !== "OPTIONS" && event.httpMethod !== "POST") {
console.log("event.httpMethod: ", event.httpMethod);
return {
statusCode: 405,
body: JSON.stringify({ message: "Method Not Allowed" }),
};
} else if (event.httpMethod === "OPTIONS") {
return {
statusCode: 204,
headers: headers,
body: null,
};
}
if (event.httpMethod === "POST") {
console.log("event.httpMethod: ", event.httpMethod);
console.log("event.body: ", event.body);
const data = JSON.parse(event.body);
console.log("data: ", data);
}
I'm getting the error in the title .What am I doing wrong?
Re-read the error message, carefully. The value of Access-Control-Allow-Headers
can be a comma separated list. See https://fetch.spec.whatwg.org/#http-access-control-allow-headers, and on MDN https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Headers/Access-Control-Allow-Headers#handling_preflight_requests
Access-Control-Allow-Headers: <header-name>, <header-name>
HTTP/1.1 200 OK
Content-Length: 0
Connection: keep-alive
Access-Control-Allow-Origin: https://foo.bar.org
Access-Control-Allow-Methods: POST, GET, OPTIONS, DELETE
Access-Control-Allow-Headers: Content-Type, x-requested-with
Access-Control-Max-Age: 86400