X-Git-Url: http://source.bookstackapp.com/bookstack/blobdiff_plain/a46b438a4c5dc52c8592aec681473c858cfdbd27..refs/pull/4467/head:/resources/js/services/http.js diff --git a/resources/js/services/http.js b/resources/js/services/http.js index d0d33e317..49d5b6df4 100644 --- a/resources/js/services/http.js +++ b/resources/js/services/http.js @@ -45,6 +45,27 @@ export class HttpError extends Error { } +/** + * @param {String} method + * @param {String} url + * @param {Object} events + * @return {XMLHttpRequest} + */ +export function createXMLHttpRequest(method, url, events = {}) { + const csrfToken = document.querySelector('meta[name=token]').getAttribute('content'); + const req = new XMLHttpRequest(); + + for (const [eventName, callback] of Object.entries(events)) { + req.addEventListener(eventName, callback.bind(req)); + } + + req.open(method, url); + req.withCredentials = true; + req.setRequestHeader('X-CSRF-TOKEN', csrfToken); + + return req; +} + /** * Create a new HTTP request, setting the required CSRF information * to communicate with the back-end. Parses & formats the response.