简体   繁体   English

相同的 URL 请求在 Postman、Talend 等上返回 200,但在使用 AJAX 从 web 应用调用时返回 404

[英]Same URL request returns 200 on Postman, Talend etc but returns 404 when called from web app using AJAX

I have made requests to a Java web service using AJAX:我已使用 AJAX 向 Java web 服务发出请求:

 <script> function loadcaptcha() { $("#spmsg").html(""); $("#txtCaptcha").val(""); var inputValObj = {}; inputValObj.flag = "LD"; inputValObj.captcha = "NA"; inputValObj.hash = "NA"; inputValObj.servicename = "Rural"; var inputVal = JSON.stringify(inputValObj); $("#target").show(); $.ajax({ url: local_url+'/captchavalue?jsoncallback=?', data:encodeURIComponent(inputVal.toString()), type: 'POST', dataType: 'jsonp', contentType: "application/json", success: function(data) { setTimeout(myFunction, 100); if (data.statusCode == "INPUT_ERR") { alert("Data Error"); }else if(data.statusCode == "CAPTCHA_ERR"){ alert("Authenticate Problem"); } else{ var captcha=data.captcha; if(getparameter==="8"){ $("#captchaImg1").attr("src","data:image/gif;base64," + captcha); $("#hashval1").val(data.hash); }else if(getparameter==="3"){ $("#captchaImg_fmb").attr("src","data:image/gif;base64," + captcha); $("#hashval_fmb").val(data.hash); } else if(getparameter==="4"){ $("#captchaImg_rev").attr("src","data:image/gif;base64," + captcha); $("#hashval_rev").val(data.hash); } else if(getparameter==="7"){ $("#captchaImg_is").attr("src","data:image/gif;base64," + captcha); $("#hashval_is").val(data.hash); } else if(getparameter==="11"){ $("#captchaImg_ec").attr("src","data:image/gif;base64," + captcha); $("#hashval_ec").val(data.hash); } else if(getparameter==="17"){ $("#captchaImg_crt").attr("src","data:image/gif;base64," + captcha); $("#hashval_crt").val(data.hash); } else{ $("#captchaImg").attr("src","data:image/gif;base64," + captcha); $("#hashval").val(data.hash); } } }, error: function(jqXHR, exception) { alert("Error Occured not connected"); } }); } </script>

Calls to the Java service works well until a few extra lines of Java code is added:在添加几行额外的 Java 代码之前,对 Java 服务的调用工作正常:

    @POST
    @Path("/captchavalue")
    public Response captchavalue(
        @QueryParam("jsoncallback") String jsonvalue, @Context HttpServletResponse serverResponse,
        @Context HttpHeaders headers, @Context HttpServletRequest request,
        String inputVal) throws ParseException,
        URISyntaxException, SQLException,IOException {
        String inputVal1 = URLDecoder.decode(inputVal, "UTF-8");
        System.out.println("inputVal ---->"+inputVal1);
        serverResponse.addHeader("Access-Control-Allow-Credentials", "true");
        serverResponse.addHeader("Allow-Control-Allow-Methods","POST");
        serverResponse.addHeader("Access-Control-Allow-Headers",
                    "X-Requested-With,Content-Type,Origin");
        serverResponse.addHeader("Access-Control-Max-Age", "3600");
        serverResponse.addHeader("X-Frame-Options", "DENY");
        serverResponse.addHeader("Content-Security-Policy", "frame-ancestors 'none'");          
        serverResponse.addHeader("Content-Type", "application/json");
        serverResponse.setHeader("cache-Control","no-cache,no-store,must-revalidate"); 
        serverResponse.setHeader("Pragma","no-cache");    
        serverResponse.setHeader("Expires","0");
        
            String responsee = "";
            String resp = "";
            boolean respflag=getUrlPath(serverResponse, request);
            JSONObject obj1 = new JSONObject();     
            if(respflag){
                String refererURI = new URI(request.getHeader("referer")).getPath();
                serverResponse.addHeader("Access-Control-Allow-Origin", refererURI);
                    
                    JSONParser parser = new JSONParser();
                    Object obj = parser.parse(inputVal1);
                                
                    JSONObject json = (JSONObject) obj;
                    String flag = json.get("flag").toString();
                    String captchaval=json.get("captcha").toString(); //changed on 13/7/2022 .toUpperCase()
                    System.out.println("capitalized ---->"+captchaval);
                    String hashval = json.get("hash").toString();
                    String servicename = json.get("servicename").toString(); 
                    System.out.println("flag ---->"+flag);

                    ResourceBundle rb = ResourceBundle.getBundle("jdbc");
                    String fmb_url=rb.getString("fmburl");
                    
                         List<String> hashvalue = memcached_data(flag,captchaval,hashval,request);                                               
                         if(flag.equals("SB")){
                             System.out.println("hashval -new--->"+hashvalue.get(0));
                             System.out.println("servicename--->"+servicename);
                             if( hashvalue.get(0).equals("VAL")){
                                 String outvalue="";        
                                 if(servicename.equals("Rural")) {
                                     outvalue=getAllServiceRural(inputVal);
                                 }else if(servicename.equals("Urban")) {
                                     String code =json.get("code").toString(); 
                                     if(code.equals("sursearch") || code.equals("oldsursearch") || code.equals("Urban_Applstatus")){
                                         outvalue=getUrbanService(inputVal);   
                                     }
                                 }
                                 else if(servicename.equals("Fmb")) {
                                     
                                        JSONParser dist_parse = new JSONParser();
                                        Object inp_obj = dist_parse.parse(inputVal);
                                        JSONObject json1 = (JSONObject) inp_obj;
                                
                                        String req = (String) json1.get("req");

                                        String district = (String) json1.get("districtCode");
                                        String taluk = (String) json1.get("talukCode");
                                        String village = (String) json1.get("villageCode");

                                        if (req.equals("survey")) {
                                            String survey_no = (String) json1.get("surveyno");
                                            outvalue = fmb_url+"/pdf/"+ district+taluk+village+survey_no;
                                            System.out.println("Outvalue1");
                                            String remoteadd = request.getRemoteHost();
                                            String s=createtoken(outvalue,survey_no,remoteadd);
                                            outvalue =outvalue+"&token="+s; 
                                            
                                        }
                                        if (req.equals("subdiv")) {
                                            String survey_no = (String) json1.get("surveyno");
                                            String subdiv_no = (String) json1.get("subdivno");
                                            outvalue = fmb_url+"/pdf/"+ district+taluk+village+survey_no+"/"+subdiv_no;
                                            System.out.println("Outvalue2");
                                            String plotNo = survey_no + "/" + subdiv_no;
                                            String remoteadd = request.getRemoteHost();
                                            String s=createtoken(outvalue,plotNo,remoteadd);
                                            outvalue =outvalue+"&token="+s;
                                        }
                                 }
                                 else if(servicename.equals("Revenue")) {
                                     JSONParser dist_parse = new JSONParser();
                                        Object inp_obj = dist_parse.parse(inputVal);
                                        JSONObject json1 = (JSONObject) inp_obj;

                                        String district = (String) json1.get("districtCode");
                                        String taluk = (String) json1.get("talukCode");
                                        String village = (String) json1.get("villageCode");
                                        String surveyNo = (String) json1.get("surveyNo");
                                        String subdivision = (String) json1.get("subdivision");

                                        String survey_no = (String) json1.get("surveyno");
                                        outvalue = get_revenue_details(district,taluk,village,surveyNo,subdivision);
                                 }else if(servicename.equals("Court")) {
                                     outvalue=getCourtService(inputVal); 
                                 }
                                 else if(servicename.equals("eadangal")) {
                                     outvalue=geteadangalService(inputVal); 
                                 }else if(servicename.equals("EC")) {
                                     outvalue=IgrsEcservice(inputVal); 
                                 }else if(servicename.equals("town_prop")) {
                                     outvalue=tndtp_get_assessment(inputVal); 
                                 }
                                 else if(servicename.equals("gcc_prop")) {
                                     outvalue=get_gcc(inputVal); 
                                 }
                                 else if(servicename.equals("ulb_prop")) {
                                     outvalue=get_dcb(inputVal); 
                                 }
                                 else if(servicename.equals("metrowater")) {
                                     outvalue=get_chennaimetrowater(inputVal); 
                                 }
                                 else if(servicename.equals("cma_water")) {
                                     outvalue=get_cmawater(inputVal); 
                                 }
                                 else if(servicename.equals("water_dtp")) {
                                     outvalue=get_dtpwatertax(inputVal); 
                                 }
                                 else if(servicename.equals("eb")) {
                                     JSONParser dist_parse = new JSONParser();
                                     Object inp_obj = dist_parse.parse(inputVal);
                                     JSONObject json1 = (JSONObject) inp_obj;
                                
                                     String service_type = (String) json1.get("service_type");
                                        
                                     if(service_type.equalsIgnoreCase("H")){
                                         outvalue=get_eb_htbill(inputVal);
                                     }else{
                                         outvalue=get_eb_billdetails(inputVal);
                                     }
                                 }
                                 //System.out.println("outvalue ---->"+outvalue);
                                obj1.put("outputvalue", outvalue);
                             }
                                obj1.put("statusCode", hashvalue.get(0));
                                obj1.put("result", hashvalue.get(1));
                                
                            }else if(flag.equals("LD") || flag.equals("RF")){
                                obj1.put("statusCode", hashvalue.get(0));
                                obj1.put("captcha",  hashvalue.get(1));
                                obj1.put("hash",hashvalue.get(2));
                         
                            }
                            else
                            {
                                obj1.put("statusCode", "ER");
                                obj1.put("captcha", "Error");
                                obj1.put("hash","Error");
                                
                            }
                        
                                            
                resp = jsonvalue + "(" + obj1.toString() + ")";
        }else
        {
            responsee = "Unauthorized Access!!!";
            return Response.ok(responsee, MediaType.TEXT_PLAIN).build();
        } 
        return Response.ok(resp, MediaType.TEXT_PLAIN).build();
    }

The code works well until the following lines are added to the else-if blocks of the Java code given above:在将以下行添加到上面给出的 Java 代码的 else-if 块之前,代码运行良好:

1. 1.

String remoteadd = request.getRemoteHost();
String s=createtoken(outvalue,plotNo,remoteadd);
outvalue =outvalue+"&token="+s;
String plotNo = survey_no + "/" + subdiv_no;
String remoteadd = request.getRemoteHost();
String s=createtoken(outvalue,plotNo,remoteadd);
outvalue =outvalue+"&token="+s;

As soon as the above code is added, the AJAX call from the application throws a 404 error for the same URL which was showing 200 status before the code addition.添加上述代码后,来自应用程序的 AJAX 调用将针对同一 URL 抛出 404 错误,该代码在添加代码之前显示 200 状态。

Additionally, the 404 error is thrown only for the AJAX call from the web app whereas the same URL shows 200 status code when called from Postman or Talend API.此外,仅针对来自 web 应用程序的 AJAX 调用抛出 404 错误,而当从 Postman 或 Talend API 调用时,相同的 URL 显示 200 状态代码。

Tried adding headers using "serverResponse.addHeader()" in Java but only to get the 404 error again.尝试在 Java 中使用“serverResponse.addHeader()”添加标头,但再次出现 404 错误。

Got the solution to this problem long ago.很久以前就得到了这个问题的解决方案。

The solution was to add the relevant JAR files to the WEB-INF/lib folder in addition to adding the same JAR files to the project build path.解决方案是除了将相同的 JAR 文件添加到项目构建路径之外,还将相关的 JAR 文件添加到 WEB-INF/lib 文件夹中。

Note: It is insufficient that the JAR files is added to the project build path alone.注意:仅将JAR文件添加到项目构建路径是不够的。 That's what triggered the error.这就是触发错误的原因。 Adding the JAR files to the WEB-INF/lib folder solved the error.将 JAR 文件添加到 WEB-INF/lib 文件夹中解决了错误。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 jQuery-获取一个URL,该URL在前几次获取时返回404,然后返回200 - JQuery - Fetching a URL that returns 404 on first few fetches, then returns 200 Ajax 删除请求返回 200 但触发错误 - Ajax delete request returns 200 but fires error 尽管执行了Ajax请求并且服务器返回了200数据,但调用了失败回调 - Fail callback called although Ajax request is performed and server returns 200 with data 网址返回404时无法交换图片,无法与AJAX一起使用 - Swapping image when url returns 404 not working with AJAX 使用request-promise获取github url返回404 - using request-promise to get a github url returns 404 React / Rails AJAX POST请求返回404 - React/Rails AJAX POST request returns 404 AJAX POST 请求返回 404 .NET 6 - AJAX POST request returns 404 .NET 6 GET 请求通过 Axios 返回错误 404,但在 Postman 中有效? - GET request returns Error 404 through Axios, but works in Postman? fetch(或AJAX Get)返回html,但Postman从feedburner返回xml - fetch (or AJAX Get) returns html but Postman returns xml from feedburner 带有原型的ajax请求以空白html页面返回200成功(间歇) - ajax request with prototype returns 200 success with blank html page (intermittent)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM