我正在使用需要锁定的跨域远程资源。 CORs头文件设置正确。
我正在尝试解决当浏览器窗口关闭时客户端没有释放资源(在锁定到期之前保持锁定状态)的情况。
我原本希望在窗口卸载时发送同步DELETE请求。我正在使用jquery(如果需要,答案可以是普通的javascript ...提及上下文的jquery)并注意到他们的文档说“跨域请求......不支持同步操作”,我变得非常难过。
是否可以制作同步跨域ajax请求?由于旧版浏览器导致jquery限制吗?我读过的所有内容都表明卸载事件监听器不会长时间足以让ajax调用完成,如果它是异步的,并建议使用同步请求进行这种类型的清理。不幸的是,这个电话是跨域的...我该怎么办?
所以我很好奇我是否在本地开发期间(即客户端在127.0.0.1:8080和api在127.0.0.1:8081)获得幸运,或者jquery文档只是误导。接下来是否会导致我遇到问题?
这似乎适用于Chrome45:
var unload_event = "unload." + lock.id
function release_lock(sync) {
$.ajax({
method: "DELETE",
async: !sync,
data: lock,
url: lock.url,
error: function(){
console.log("failed to release lock " + JSON.stringify(lock));
},
success: function(){
console.log("lock " + lock.id + " released");
lock = null;
$(window).off(unload_event);
}
});
}
$(window).on(unload_event, function(){
release_lock(true);
});
它确实在控制台中生成以下警告:
Synchronous XMLHttpRequest on the main thread is deprecated because of
its detrimental effects to the end user's experience.
For more help, check http://xhr.spec.whatwg.org/.