上传PDF时AJAX请求出现403 Forbidden错误,请求技术解决方案
解决AJAX上传PDF时403 Forbidden错误的方案
先看你代码里的明显错误:
- AJAX配置里重复定义了
type属性:你先写了type : 'multipart/form-data',后面又写了type : "POST"。type是用来指定请求方法(GET/POST)的,而multipart/form-data属于请求的contentType字段,这里的错误配置会干扰请求的正常发送。
第一步:修复代码中的配置错误
删掉错误的type : 'multipart/form-data'行,保留正确的请求方法配置,修改后的AJAX代码如下:
$.ajax({ headers : { "X-CSRF-TOKEN" : csrf }, processData : false, // 必须,避免jQuery自动处理FormData导致格式错误 contentType: false, // 必须,让浏览器自动生成multipart/form-data的请求头和边界 cache : false, data : data, type : "POST", // 仅保留这一个type,指定请求方法为POST url : "./parseResume", // 以下success、error回调逻辑保持不变 success : function(result) { if (result.status == "Done") { current_employee_id = result.data.employeeId; $('#myModal').modal('hide'); $('#candidatesBlock1').empty(); } $(".tab-slider--navresumedetails li:nth-child(2)").trigger('click') $(".tab-slider--navresumedetails li:nth-child(1)").css('pointer-events', 'none'); $(".add_candidate_form_parent").css('height', '698px'); $(".add_candidate_form_parent").css('overflow', 'auto'); getSupplierEmail() var obj = result.data; unparsed_resumes_list = obj; current_employee_id = obj.employeeId; $('#userId_unparesedResume').val(obj.employeeId); unparsedBulkSharedResumePreview(obj); $('#btn_save_unparsedSharedBulkResumes').html('Save'); if (result.status == "error") { $('#myModal').modal('hide'); } }, error : function(result) { console.log(result); } });
其他可能的排查方向
- CSRF令牌验证:在控制台打印
csrf变量,确认是否从页面的input[name='_csrf']获取到了有效令牌;同时检查后端是否正确配置了CSRF拦截规则,是否支持X-CSRF-TOKEN这个请求头字段(部分框架默认用X-XSRF-TOKEN)。 - 文件大小限制:如果上传的PDF过大,后端可能会返回403,检查后端(比如你的Servlet)的文件上传配置,确认
maxFileSize等参数是否足够。 - 接口权限校验:确认
./parseResume接口是否允许当前用户访问,后端是否有角色/权限拦截规则,当前用户会话是否有效。 - 关于错误提示:‘a padding to disable MSIE and Chrome friendly error page’是服务器添加的填充内容,目的是避免浏览器把短错误页面替换成自带的友好提示,核心问题还是403权限/配置错误,解决403后这个提示会自然消失。
内容的提问来源于stack exchange,提问作者pawan ks
相关产品推荐
相关产品推荐

