项目场景:
项目需求:有a和b两个项目,a项目需要发送ajax请求b项目中的数据。
我在a项目中的表单提交按钮时,调用js方法,方法中发送ajax请求,被浏览器拒绝,请求发送不出去,浏览器请求状态为(canceled),报错no-referrer-when-downgrade
Provisional headers are shown。
form按钮:
ajax请求代码:
问题描述:
在项目中,jsp页面发送ajax请求到另一个项目,请求被浏览器拒绝,发送请求失败,另一个项目没有接收到请求。浏览器报错如下:
(canceled)
Referrer Policy:
no-referrer-when-downgrade
Provisional headers are shown
原因分析:
浏览器拒绝发送请求,可能是发送ajax请求时,被外部干扰打断ajax请求,导致请求发送失败。
解决方案:
方案一:把ajax请求改为同步执行(async: false,)。
方案二:阻止表单的默认提交事件,找到外部干扰提交并干掉他(event.preventDefault();)。。
我的解决是把ajax请求改为同步执行的:
设置ajax的async为false:
async: false
$.ajax({
type : "POST",
url : "url",
data : formdatastr,
contentType: "application/json",
cache:false,
async: false, //同步执行
selfDef:true,
headers : {
"Authorization" : token,
},
success : (res)=>{
console.log(res)
},
error : (res)=>{
console.log("error")
}
});