URL 引數為sql 有空格 的解決辦法
阿新 • • 發佈:2020-07-20
var strsql=" select e.* from es_doc_main e where 1=1" +" and e.doccode='"+prtNo+"' and e.subtype <> '1022' and e.busstype='TB' order by subtype "; //strsql.replace(/\s+/g,"%20"); if(arrResult[0][0]=='01') { easyScanWin = window.open( "./ProposalEasyScan.jsp?LoadFlag=5&QueryType=4&prtNo="+prtNo+"&MissionID="+tMissionID+"&SubMissionID="+tSubMissionID+"&ProposalType=01" + "&ManageCom="+tManageCom+"&SqlStr="+encodeURI(strsql), "", ""); }
這裡 會顯示無法找到頁面404
開發web服務中,發現當url中含有空格時,會報 400 error: bad request sytanx,經分析,url中含有特殊字元時,服務端可能無法識別。
如+,空格,/,?,%,#,&,=等。該如何破呢?
應當使用字元轉義,將特殊字元進行編碼表示。編碼格式是:% + 對應字元的ascii碼。
+ URL 中+號表示空格 %2B
空格 URL中的空格可以用+號或者編碼 %20
/ 分隔目錄和子目錄 %2F
? 分隔實際的URL和引數 %3F
% 指定特殊字元 %25
# 表示書籤 %23
& URL 中指定的引數間的分隔符 %26
= URL 中指定引數的值 %3D
所以需要處理(sql)中的空格,在js中處理辦法
..."&ManageCom="+tManageCom+"&SqlStr="+encodeURI(strsql)
在JSP中的處理辦法
<frame id="fraPic" name="fraPic" scrolling="auto" src="../common/EasyScanQuery/EasyScanQuery.jsp?prtNo=<%=request.getParameter("prtNo")%>&QueryType=<%=request.getParameter("QueryType")%>&SqlStr=<%=java.net.URLEncoder.encode(request.getParameter("SqlStr"))%>">
另外檢視定義
atzhang