是否可以在页面上捕获所有ajax调用的$ .ajax beforeSend事件,无论它在何处启动?
具体来说,我使用Swagger UI / Swashbuckle并且无法直接修改页面上的JS代码,但可以使用SwaggerConfig.cs中的.EnableSwaggerUI调用中的InjectJavaScript调用来注入一些脚本。 swagger数据超出了我的控制范围,并且未正确形成以显示oauth设置,因此我需要允许用户输入API密钥并将其放在标题中。
我尝试了多次迭代,包括:
$(document).on("ajaxStart", function (jqXHR) {
var key = $('#input_apiKey')[0].value;
if (key && key.trim() != "") {
key = "Bearer " + key;
jqXHR.setRequestHeader("Authorization", key);
}
});
和
$(document).on("beforeSend", function (jqXHR) {
var key = $('#input_apiKey')[0].value;
if (key && key.trim() != "") {
key = "Bearer " + key;
jqXHR.setRequestHeader("Authorization", key);
}
});
和
$.ajaxSetup({
beforeSend: function (jqXHR, settings) {
var key = $('#input_apiKey')[0].value;
if (key && key.trim() != "") {
key = "Bearer " + key;
jqXHR.setRequestHeader("Authorization", key);
}
}
});
一切都没有成功。也许我只是盯着代码太久而且显而易见,但我无法获得要调用的函数。
答案 0 :(得分:0)
您的第三个选项应该有效,但您需要在$(document).ready()
中调用它:
$(function(){
$.ajaxSetup({
beforeSend: function(jqXHR) { ... }
});
});
但不建议使用此选项。你应该使用https://security.stackexchange.com/questions/37409/certificate-chain-checking
编辑:好的,然后尝试ajaxSend,以防onSend被覆盖:
$(document).ajaxSend(
function(event, jqXHR) {
var key = $('#input_apiKey')[0].value;
if (key && key.trim() != "") {
key = "Bearer " + key;
jqXHR.setRequestHeader("Authorization", key);
}
}
);