国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

全網(wǎng)多種方法解決在請(qǐng)求目標(biāo)中找到無(wú)效字符。有效字符在RFC 7230和RFC 3986中定義的錯(cuò)誤

這篇具有很好參考價(jià)值的文章主要介紹了全網(wǎng)多種方法解決在請(qǐng)求目標(biāo)中找到無(wú)效字符。有效字符在RFC 7230和RFC 3986中定義的錯(cuò)誤。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1. 復(fù)現(xiàn)錯(cuò)誤


今天根據(jù)需求文檔,寫(xiě)完導(dǎo)入hive表的接口,如下代碼所示:

/**
 * hive表導(dǎo)入
 *
 * @author super先生
 * @datetime 2023/3/20:16:32
 * @return
 */
@RequestMapping(value = "/xxx/importTables", method = RequestMethod.GET)
public ServiceStatusData localHiveImportTables(@RequestParam("importTableJson") String importTableJson) {
  logger.info("入?yún)⒂涗洠篿mportTables={}", importTableJson);
  ...
  ...
  return new ServiceStatusData(ServiceStatusData.Status.Success, "", null);
}

使用postman測(cè)試該接口時(shí),確保出如下錯(cuò)誤信息:

有效字符在rfc7230和rfc3986中定義,免費(fèi)專(zhuān)欄,java,開(kāi)發(fā)語(yǔ)言,后端,前端,tomcat

異常報(bào)告

消息 在請(qǐng)求目標(biāo)中找到無(wú)效字符。有效字符在RFC 7230和RFC 3986中定義

描述 由于被認(rèn)為是客戶(hù)端對(duì)錯(cuò)誤(例如:畸形的請(qǐng)求語(yǔ)法、無(wú)效的請(qǐng)求信息幀或者虛擬的請(qǐng)求路由),服務(wù)器無(wú)法或不會(huì)處理當(dāng)前請(qǐng)求。

例外情況

java.lang.IllegalArgumentException: 在請(qǐng)求目標(biāo)中找到無(wú)效字符。有效字符在RFC 7230和RFC 3986中定義
	org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:509)
	org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:513)
	org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:65)
	org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:882)
	org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1691)
	org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
	org.apache.tomcat.util.threads.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1191)
	org.apache.tomcat.util.threads.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:659)
	org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	java.lang.Thread.run(Thread.java:745)

):注意 主要問(wèn)題的全部 stack 信息可以在 server logs 里查看


在請(qǐng)求目標(biāo)中找到無(wú)效字符。有效字符在RFC 7230和RFC 3986中定義

2. 分析錯(cuò)誤


正趕上最近ChatGPT比較火,借助它分析我的錯(cuò)誤,如下圖所示:

有效字符在rfc7230和rfc3986中定義,免費(fèi)專(zhuān)欄,java,開(kāi)發(fā)語(yǔ)言,后端,前端,tomcat

ChatGPT說(shuō)在HTTP請(qǐng)求中,URL中不能包含一些特殊字符,比如:

  1. 空格

  2. 尖括號(hào)

  3. 花括號(hào)

于是,檢查我的請(qǐng)求接口:http://localhost:8080/dav-war/netin/hive/importTables.do?importTableJson="{\"hiveTableName\":\"project\",\"tableImportType\":1,\"pkColumn\":\"id\",\"incrementColumn\":\"projectname\",\"cron\":\"0 0 11 * * ?\"}"。

我的請(qǐng)求接口中,果然包含特殊符號(hào),比如花括號(hào)和雙引號(hào)等。

3. 解決錯(cuò)誤

既然我的請(qǐng)求接口包含特殊符號(hào),那么,我需要修改后端接參方式,如下代碼所示:

/**
 * hive表導(dǎo)入
 *
 * @author super先生
 * @datetime 2023/3/20:16:32
 * @return
 */
@RequestMapping(value = "/xxx/importTables", method = RequestMethod.GET)
public ServiceStatusData localHiveImportTables(
    @RequestParam("hiveTableName") String hiveTableName,
    @RequestParam("tableImportType") String tableImportType,
    @RequestParam(value = "pkColumn", required = false) String pkColumn,
    @RequestParam(value = "incrementColumn", required = false) String incrementColumn,
    @RequestParam("cron") String cron) {
  ImportTablesBo importTablesBo = new ImportTablesBo();
  importTablesBo.setHiveTableName(hiveTableName);
  importTablesBo.setTableImportType(tableImportType);
  importTablesBo.setPkColumn(pkColumn);
  importTablesBo.setIncrementColumn(incrementColumn);
  importTablesBo.setCron(cron);
  logger.info("入?yún)⒂涗洠篿mportTablesBo={}", importTablesBo);
  return new ServiceStatusData(ServiceStatusData.Status.Success, "", importTablesBo);
}

啟動(dòng)項(xiàng)目后,修改postman的請(qǐng)求參數(shù),再次使用postman測(cè)試,便沒(méi)有報(bào)出上述的錯(cuò)誤,如下圖所示:

有效字符在rfc7230和rfc3986中定義,免費(fèi)專(zhuān)欄,java,開(kāi)發(fā)語(yǔ)言,后端,前端,tomcat

4. 解決該錯(cuò)誤的其他方法


如果我的錯(cuò)誤解決方法,無(wú)法解決你的錯(cuò)誤,可以參考如下的解決方法。

4.1 解決該錯(cuò)誤的方法1

如果因?yàn)?code>超鏈接參數(shù)帶中文而報(bào)錯(cuò),可進(jìn)行如下修改:

通過(guò)腳本來(lái)將href超鏈接傳遞的參數(shù)轉(zhuǎn)換為from表單提交:

function linkClick(linkObject) {

var formObject = document.createElement('form');
 document.body.appendChild(formObject);
 formObject.setAttribute('method', 'post');
 var url = linkObject.href;
 var uri = '';
 var i = url.indexOf('?');

if(i == -1) {
  formObject.action = url;
} else {
    formObject.action = url.substring(0, i);
 }

  if( i >= 0 && url.length >= i + 1) {
    uri = url.substring(i + 1, url.length);
 }

 var sa = uri.split('&');

for(var i = 0; i < sa.length; i++) {
    var isa = sa[i].split('=');
    var inputObject = document.createElement('input');
    inputObject.setAttribute('type', 'hidden');
    inputObject.setAttribute('name', isa[0]);
    inputObject.setAttribute('value', isa[1]);
    formObject.appendChild(inputObject);
 }

   formObject.submit();

   return false;
}

【注意事項(xiàng)】:部分瀏覽器若傳參出現(xiàn)urlencode編碼,且不想出現(xiàn)這個(gè)編碼時(shí),可進(jìn)行如下修改:

 inputObject.setAttribute('value', isa[1]);

修改為

inputObject.setAttribute('value', decodeURIComponent(isa[1]));

或使用java解碼

java.net.URLDecoder.decode(mytext,“utf-8”)

4.2 解決該錯(cuò)誤的方法2

如果因?yàn)?code>超鏈接參數(shù)帶特殊字符而報(bào)錯(cuò),可進(jìn)行如下修改:

參數(shù)中可能包含了|{}[],%等一些特殊字符,修改Tomcatserver.xml文件:

有效字符在rfc7230和rfc3986中定義,免費(fèi)專(zhuān)欄,java,開(kāi)發(fā)語(yǔ)言,后端,前端,tomcat

可在server.xml中的Connector添加如下代碼:

relaxedPathChars="|{}[],%" relaxedQueryChars="|{}[],%"

例如:(參數(shù)里有哪些特殊字符,就加哪些)

<Connector port="80" protocol="HTTP/1.1"
            connectionTimeout="20000"
            redirectPort="8443" 
        relaxedPathChars="|{}[],%" relaxedQueryChars="|{}[],%"
 />

4.3 解決該錯(cuò)誤的方法3

檢查是否因?yàn)閰?shù)的類(lèi)型不匹配,如下圖所示:

有效字符在rfc7230和rfc3986中定義,免費(fèi)專(zhuān)欄,java,開(kāi)發(fā)語(yǔ)言,后端,前端,tomcat

前臺(tái)傳到后臺(tái)的數(shù)據(jù)類(lèi)型,如果都是String

  1. "哈哈"是中文,轉(zhuǎn)成int會(huì)報(bào)錯(cuò)。
  2. "666"實(shí)體類(lèi)中也是String,沒(méi)問(wèn)題。
  3. "沒(méi)錢(qián)了"是中文,轉(zhuǎn)double會(huì)報(bào)錯(cuò)。
  4. "2020-11-05"springmvc默認(rèn)不支持StringDate的轉(zhuǎn)換,會(huì)報(bào)錯(cuò)。

5. 文末備注


如果上述所有的方法無(wú)法解決你的錯(cuò)誤,或者你的錯(cuò)誤不是由上述方法解決的,可在評(píng)論區(qū)留言,大家共同進(jìn)步。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-752283.html

到了這里,關(guān)于全網(wǎng)多種方法解決在請(qǐng)求目標(biāo)中找到無(wú)效字符。有效字符在RFC 7230和RFC 3986中定義的錯(cuò)誤的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包