mirror of
https://github.com/discourse/discourse.git
synced 2025-06-04 06:24:48 +08:00
DEV: Ensure only one csrftoken request is running simultaneously (#31390)
Before this, triggering two ajax requests close together would 'race' to create a csrf-token, and only one would succeed
This commit is contained in:
@ -45,10 +45,16 @@ function handleRedirect(xhr) {
|
||||
}
|
||||
}
|
||||
|
||||
let activeCsrfRequest;
|
||||
|
||||
export function updateCsrfToken() {
|
||||
return ajax("/session/csrf").then((result) => {
|
||||
Session.currentProp("csrfToken", result.csrf);
|
||||
});
|
||||
if (!activeCsrfRequest) {
|
||||
activeCsrfRequest = ajax("/session/csrf")
|
||||
.then((result) => Session.currentProp("csrfToken", result.csrf))
|
||||
.finally(() => (activeCsrfRequest = null));
|
||||
}
|
||||
|
||||
return activeCsrfRequest;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user