Tale: "=", "&" рд╕рд╣рд┐рдд рдПрдХ рд▓реЗрдЦ рдкреЛрд╕реНрдЯ рдХрд░реЗрдВ, рдЬрд┐рд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рд╣реЗрдЬрдиреЗ рдореЗрдВ рд╡рд┐рдлрд▓рддрд╛ рд╣реЛрддреА рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 18 рджрд┐рд╕ре░ 2019  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: otale/tale

рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрд╛ рдерд╛ред рдЪреВрдБрдХрд┐ рдХреБрдЫ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд┐рдПред
рдЬрдм рд░рд┐рдЬрд▓реНрдЯ рд╕реЗрд╡ рдХрд┐рдпрд╛ рдЧрдпрд╛ рддреЛ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдПрд░рд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
io.netty.handler.codec.http.multipart.HttpPostRequestDecoder$ErrorDataDecoderException: java.io.IOException: Unable to create temporary file, C:\Users\pys1714\AppData\Local\Temp\Attr_7771572786958116046_{"cid":4,"title":
рдПрдХ рддреНрд░реБрдЯрд┐ рджреЗрдЦрдХрд░, рдореИрдВрдиреЗ рд╢реБрд░реВ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рд╕рд╣реЗрдЬрдиреЗ рдХреА рд░рдгрдиреАрддрд┐ рдлрд╝рд╛рдЗрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХреИрд╢ рдХрд░рдирд╛ рдерд╛, рдФрд░ рдбреЗрдЯрд╛ рдХреА рд▓рдВрдмрд╛рдИ рдкрд░ рдПрдХ рд╕реАрдорд╛ рдереА, рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рдбреАрдмрдЧ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджрд┐рдпрд╛ред рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рдЕрд╕реНрдерд╛рдпреА рдлрд╛рдЗрд▓ рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реБрдИ рд╣реИред рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рдерд╛ рдХрд┐ рдпрд╣ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХрд╛ рдХреЛрдИ рдХрд╛рд░рдг рдерд╛ред

рддреНрд░реБрдЯрд┐ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡рд┐рдзрд┐ io.netty.handler.codec.http.multipart.HttpPostRequestDecoder.parseBodyAttributes()

рд╡рд┐рдзрд┐ рдХрд╛ рдЕрд╡рд▓реЛрдХрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдиреЗрдЯреНрдЯреА рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдкрд╛рд╕ рдХрд┐рдП рдЧрдП рдбреЗрдЯрд╛ рдХреЛ рдкрдврд╝ рд░рд╣реА рдереА, рдФрд░ рдлрд┐рд░ рдПрдХ-рдПрдХ рдХрд░рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рдирд┐рд░реНрдгрдп рд▓реЗ рд░рд╣реА рдереАред

switch (currentStatus) {
case DISPOSITION:// search '='
     // other code
    break;
case FIELD:// search '&' or end of line
    // other code
    break;
default:
    // just stop
    sao.setReadPosition(0);
    contRead = false;
    break loop;
}

рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЯрд┐рдкреНрдкрдгреА рджреЛ рд╡рд░реНрдгреЛрдВ "=" рдФрд░ "&" рдХреЛ рдХреНрд╡реЗрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддреА рд╣реИред рдПрдХ рдХреЛрд╢рд┐рд╢ рдХреЗ рд╕рд╛рде, рдореЗрд░реЗ рд▓реЗрдЦ рдореЗрдВ рдХреЗрд╡рд▓ "=" рд╣реИ, рд╕рд╣реЗрдЬреЗрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░реЗрдВ, рдФрд░ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд░рд┐рдкреЛрд░реНрдЯ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рдХреА рдЬрд╛рддреА рд╣реИ:
io.netty.handler.codec.http.multipart.HttpPostRequestDecoder$ErrorDataDecoderException: java.io.IOException: цЦЗф╗╢хРНуАБчЫох╜ХхРНцИЦхН╖цаЗшпнц│Хф╕НцнгчбоуАВ
рдореИрдВрдиреЗ рдлрд┐рд░ рд╕реЗ "&" рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдФрд░ рдРрд╕рд╛ рд╣реА рдХрд┐рдпрд╛ред

рдореЗрд░реЗ рдкрд╛рд╕ рдЕрднреА рддрдХ рдХреЛрдИ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рддреНрд░реБрдЯрд┐ рдиреЗрдЯреНрдЯреА рдХреА рдПрдХ рдирд┐рдЬреА рд╡рд┐рдзрд┐ рд╣реИред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛, https://juejin.im/post/5c63a028f265da2d9262c662

рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рд╣реИ,

  1. src/main/java рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдБ: io.netty.handler.codec.http.multipart

  2. netty-codec-http-4.1.30.Final.jar рдХреЗ рдЕрдиреБрд░реВрдк рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ HttpPostStandardRequestDecoder.java рдЦреЛрдЬреЗрдВ

  3. рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ

  4. parseBodyAttributes() рдвреВрдВрдвреЗрдВ, рдФрд░ рд╡рд┐рдзрд┐ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
          return;
}
  1. рдХрд╣рд╛рдиреА рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд╡реЗрди рдкреИрдХреЗрдЬ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рд╕рднреА 6 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛, https://juejin.im/post/5c63a028f265da2d9262c662

рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рд╣реИ,

  1. src/main/java рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдБ: io.netty.handler.codec.http.multipart

  2. netty-codec-http-4.1.30.Final.jar рдХреЗ рдЕрдиреБрд░реВрдк рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ HttpPostStandardRequestDecoder.java рдЦреЛрдЬреЗрдВ

  3. рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ

  4. parseBodyAttributes() рдвреВрдВрдвреЗрдВ, рдФрд░ рд╡рд┐рдзрд┐ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:

if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
          return;
}
  1. рдХрд╣рд╛рдиреА рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд╡реЗрди рдкреИрдХреЗрдЬ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ

рд╣рдореНрдо, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдмреНрд▓реЗрдб рдХреА рдирд┐рдЪрд▓реА рдкрд░рдд рдиреЗ рдПрдХ рддреНрд░реБрдЯрд┐ рдХреА рд╕реВрдЪрдирд╛ рджреАред рджрд┐рд▓ рдЯреВрдЯ рдЧрдпрд╛ рд╣реИред рдкрд╣рд▓реЗ рдЕрдкрдирд╛ рддрд░реАрдХрд╛ рдЖрдЬрдорд╛рдПрдВредрдзрдиреНрдпрд╡рд╛рдж

рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рдкрдврд╝рдХрд░, рдореБрдЭреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ред .рдЕрдЬреНрдЮрд╛рдирддрд╛ рд╡реНрдпрдХреНрдд рдХрд░рдирд╛

рдмреНрд▓реЗрдб рдиреЗрдЯреНрдЯреА рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ
<dependency> <groupId>io.netty</groupId> <artifactId>netty-codec</artifactId> <version>4.1.31.Final</version> </dependency>

рдмреНрд▓реЗрдб рдиреЗрдЯреНрдЯреА рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░реЗрдВ
<dependency> <groupId>io.netty</groupId> <artifactId>netty-codec</artifactId> <version>4.1.31.Final</version> </dependency>

рдХреЛрд╢рд┐рд╢ рдХреА, рдЬрд┐рд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ред . .

рдПрдХ рд╕рдорд╛рдзрд╛рди рдорд┐рд▓рд╛, https://juejin.im/post/5c63a028f265da2d9262c662

рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд┐рдзрд┐ рд╣реИ,

  1. src/main/java рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдПрдХ рдкреИрдХреЗрдЬ рдмрдирд╛рдПрдБ: io.netty.handler.codec.http.multipart
  2. netty-codec-http-4.1.30.Final.jar рдХреЗ рдЕрдиреБрд░реВрдк рд╕реНрд░реЛрдд рдХреЛрдб рд╕реЗ HttpPostStandardRequestDecoder.java рдЦреЛрдЬреЗрдВ
  3. рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рдкрд╣рд▓реЗ рдЪрд░рдг рдореЗрдВ рдмрдирд╛рдП рдЧрдП рдкреИрдХреЗрдЬ рдореЗрдВ рдХреЙрдкреА рдХрд░реЗрдВ
  4. parseBodyAttributes() рдвреВрдВрдвреЗрдВ, рдФрд░ рд╡рд┐рдзрд┐ рдХреА рдкрд╣рд▓реА рдкрдВрдХреНрддрд┐ рдореЗрдВ рдирд┐рдореНрди рдХреЛрдб рдЬреЛрдбрд╝реЗрдВ:
if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
          return;
}
  1. рдХрд╣рд╛рдиреА рдХреЛ рдкреИрдХреЗрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рд╡реЗрди рдкреИрдХреЗрдЬ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ
if(!this.request.headers().get("Content-Type").startsWith(APPLICATION_X_WWW_FORM_URLENCODED)){
          return;
}

рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдиреАрдЪреЗ рд╣реИ

if(!this.request.headers().get("Content-Type").startsWith("application/x-www-form-urlencoded")){
            return;
 }

рд╕рд╣реА рд╕рдорд╛рдзрд╛рдиЁЯСН
A(G1% (QH{7~MTO)O438YC5
A(G1% (QH{7~MTO)O438YC5

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

gqb picture gqb  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

biezhi picture biezhi  ┬╖  10рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

biezhi picture biezhi  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

xiamuguizhi picture xiamuguizhi  ┬╖  7рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pkwenda picture pkwenda  ┬╖  53рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ