使用jsonp请求添加自定义请求头。获取接口返回结果失败
--------跨域安全限制只针对web端,服务器端不存在限制
chrome:
jsonp 请求返回error:aborded
jquery.min.js:4 GET http://XXX/configService?callback=jQuery111105210777633725245_1576655839134&data=%7B%22method%22%3A...&_=1576655839135 net::ERR_ABORTED 500 (Internal Server Error)
换用firefox请求,正常返回带callback的结果
jsonp ajax请求格式:
$.ajax({
url:'',
type:'Get',
crossDomain:true,
dataType:'jsonp',
jsonp:'callback',
scriptCharset:'utf-8',
data:{data:Json.stringify(req)},
xhrFields:{withCredentials:true},
success:function(){},
error:function(){}
});
问题:后端接收不到自定义请求头“APP-KEY”
解决办法:
使用jsonp请求处理跨域问题时,jsonp请求使用<script>标签,因为<script>、<ifram>、<img>等带有src属性,不受同源策略约束来跨域获取数据,相当于:
浏览器不会接收到js添加的任何请求头信息,所以不会传递给后台;即:ajax方式的jsonp请求无法自定义headers
注意:jsonp请求只接受GET,若为post会转化为get;
关于callback: 默认ajax success()作为回调函数
ajax jsonp 属性默认‘callback’,若改为其他属性,后端需要 添加Access-Control-Allow-header