-
-
Notifications
You must be signed in to change notification settings - Fork 81
Open
Description
Issue Summary
I'm writing a plugin uploading images from obsidian to ghost. When running the code bellow it triggers CORS due to the use of axios. See also https://forum.ghost.org/t/cors-using-admin-api-from-electron-app-obsidian/37743/6
To Reproduce
- Code bellow and run the plugin. (Ignore if there's a parenthesis missing or something, I went back to try and reconstruct it).
async function uploadImages(html: string) {
// Find images that Ghost Upload supports
let imageRegex = /!*\[\[(.*?)\]\]/g;
let imagePromises = [];
// Get full-path to images
let imageDirectory: string;
let adapter = app.vault.adapter;
if (adapter instanceof FileSystemAdapter) {
imageDirectory = adapter.getBasePath(); // Vault directory
if (settings.screenshotsFolder) {
imageDirectory = `${imageDirectory}${settings.screenshotsFolder}`;
}
if (frontmatter.imageDirectory) { // Extends the image directory
imageDirectory = `${imageDirectory}${frontmatter.imageDirectory}`;
}
}
console.log("Image Directory", imageDirectory);
let result: RegExpExecArray | null; // Declare the 'result' variable
while((result = imageRegex.exec(html)) !== null) {
let file = `${imageDirectory}/${result[1]}`;
// Upload the image, using the original matched filename as a reference
imagePromises.push(api.images.upload({
ref: file,
file: file
}));
}
return Promise
.all(imagePromises)
.then(images => {
images.forEach(image => html = html.replace(image.ref, image.url));
return html;
});
}
- Execute the plugin in obsidian and get the following:
Access to XMLHttpRequest at 'http://localhost:2368/ghost/api/v4/admin/images/upload/' from origin 'app://obsidian.md' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Maybe this is more of a feature request than a bug - nevertheless something annoying.
Metadata
Metadata
Assignees
Labels
No labels