Auto-set Content-Type for JSON HTTP requests
- Add automatic Content-Type header injection for JSON string bodies - Explicitly set Content-Type on bookmark toggle and share creation calls - Add escapeHtml helper function for safe string handling
This commit is contained in:
+12
-1
@@ -1440,6 +1440,10 @@
|
|||||||
// Inject auth header if authenticated
|
// Inject auth header if authenticated
|
||||||
const authHeaders = AuthManager.getAuthHeaders();
|
const authHeaders = AuthManager.getAuthHeaders();
|
||||||
const mergedOpts = opts || {};
|
const mergedOpts = opts || {};
|
||||||
|
// Auto-set Content-Type for JSON bodies
|
||||||
|
if (mergedOpts.body && typeof mergedOpts.body === "string" && !mergedOpts.headers?.["Content-Type"]) {
|
||||||
|
mergedOpts.headers = { ...mergedOpts.headers, "Content-Type": "application/json" };
|
||||||
|
}
|
||||||
if (authHeaders) {
|
if (authHeaders) {
|
||||||
mergedOpts.headers = { ...mergedOpts.headers, ...authHeaders };
|
mergedOpts.headers = { ...mergedOpts.headers, ...authHeaders };
|
||||||
}
|
}
|
||||||
@@ -3273,7 +3277,7 @@
|
|||||||
const bookmarkBtn = el("button", { class: "btn-action", title: "Ajouter/Retirer des bookmarks" }, [icon("bookmark-plus", 14), document.createTextNode("Bookmark")]);
|
const bookmarkBtn = el("button", { class: "btn-action", title: "Ajouter/Retirer des bookmarks" }, [icon("bookmark-plus", 14), document.createTextNode("Bookmark")]);
|
||||||
bookmarkBtn.addEventListener("click", async () => {
|
bookmarkBtn.addEventListener("click", async () => {
|
||||||
try {
|
try {
|
||||||
const res = await api("/api/bookmarks/toggle", { method: "POST", body: JSON.stringify({ vault: data.vault, path: data.path, title: data.title }) });
|
const res = await api("/api/bookmarks/toggle", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ vault: data.vault, path: data.path, title: data.title }) });
|
||||||
showToast(res.bookmarked ? "Ajouté aux bookmarks" : "Retiré des bookmarks", "success");
|
showToast(res.bookmarked ? "Ajouté aux bookmarks" : "Retiré des bookmarks", "success");
|
||||||
if (typeof DashboardBookmarkWidget !== "undefined") DashboardBookmarkWidget.load();
|
if (typeof DashboardBookmarkWidget !== "undefined") DashboardBookmarkWidget.load();
|
||||||
} catch (err) { showToast("Erreur: " + err.message, "error"); }
|
} catch (err) { showToast("Erreur: " + err.message, "error"); }
|
||||||
@@ -4620,6 +4624,7 @@
|
|||||||
const expiry = document.getElementById("share-expiry")?.value;
|
const expiry = document.getElementById("share-expiry")?.value;
|
||||||
const share = await api(`/api/share/${encodeURIComponent(vault)}`, {
|
const share = await api(`/api/share/${encodeURIComponent(vault)}`, {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
body: JSON.stringify({ path, expires_in_hours: expiry ? parseInt(expiry) : null }),
|
body: JSON.stringify({ path, expires_in_hours: expiry ? parseInt(expiry) : null }),
|
||||||
});
|
});
|
||||||
existingShare = share;
|
existingShare = share;
|
||||||
@@ -5536,6 +5541,11 @@
|
|||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
// Helpers
|
// Helpers
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
function escapeHtml(str) {
|
||||||
|
if (!str) return "";
|
||||||
|
return String(str).replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
||||||
|
}
|
||||||
|
|
||||||
function el(tag, attrs, children) {
|
function el(tag, attrs, children) {
|
||||||
const e = document.createElement(tag);
|
const e = document.createElement(tag);
|
||||||
if (attrs) {
|
if (attrs) {
|
||||||
@@ -6658,6 +6668,7 @@
|
|||||||
try {
|
try {
|
||||||
const data = await api("/api/bookmarks/toggle", {
|
const data = await api("/api/bookmarks/toggle", {
|
||||||
method: "POST",
|
method: "POST",
|
||||||
|
headers: { "Content-Type": "application/json" },
|
||||||
body: JSON.stringify({ vault: this._targetVault, path: this._targetPath, title: this._targetPath.split("/").pop() }),
|
body: JSON.stringify({ vault: this._targetVault, path: this._targetPath, title: this._targetPath.split("/").pop() }),
|
||||||
});
|
});
|
||||||
showToast(data.bookmarked ? "Ajouté aux bookmarks" : "Retiré des bookmarks", "success");
|
showToast(data.bookmarked ? "Ajouté aux bookmarks" : "Retiré des bookmarks", "success");
|
||||||
|
|||||||
Reference in New Issue
Block a user