8000 nacos-server rest接口请求参数反序列化问题 · Issue #3673 · alibaba/nacos · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
nacos-server rest接口请求参数反序列化问题 #3673
Closed
@dengjt-1010

Description

@dengjt-1010

Describe the bug
当用户发布请求时候,比如发布如下配置,会有异常:

nacos.log中的异常日志:

020-08-24 15:34:31,074 INFO Error parsing HTTP request header
Note: further occurrences of HTTP request parsing errors will be logged at DEBUG level.

java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:467)
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:294)
at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66)
at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:791)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417)
at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)

配置:

{
    "type": "sharding",
    "name": "abcdef_ghijkmln_shard",
    "endpoints": [
    {
        "url": "jdbc:mysql://abc-mysql-test-:3306/abcdef_ghijkmln_0?user=abcdef&password=abcdef123",
        "roles": ["write", "read"],
        "shard": "0"
    },
    {
        "url": "jdbc:mysql://abc-mysql-test-:3306/abcdef_ghijkmln_1?user=abcdef&password=abcdef123",
        "roles": ["write", "read"],
        "shard": "1"
    },
    {
        "url": "jdbc:mysql://abc-mysql-test-:3306/abcdef_ghijkmln_0?user=abcdef&password=abcdef123",
        "roles": ["read"],
        "shard": "0"
    },
    {
        "url": "jdbc:mysql://abc-mysql-test-:3306/abcdef_ghijkmln_1?user=abcdef&password=abcdef123",
        "roles": ["read"],
        "shard": "1"
    }
    ],
    "pools": [
    {
 
    }
    ],
    "extra": {
        "bindingTables": [ "ghijkmln_mygod", "ghijkmln_mygod_delivery", "team_student", "ghijkmln_mygod_tx_record", "ghijkmln_mygod_lid", "team_student_lid" ],
        "broadcastTables": [],
        "tableRules": [
        {
            "logicalTable": "ghijkmln_mygod",
            "actualDataNodes": "abcdef_ghijkmln_shard0.ghijkmln_mygod_${0..255}, abcdef_ghijkmln_shard1.ghijkmln_mygod_${256..511}",
            "databaseSharding": {
                "type": "inline",
                "params": {
                    "column": "mmmkkekeke",
                    "expression": "abcdef_ghijkmln_shard${mmmkkekeke % 2}"
                }
            },
            "tableSharding": {
                "type": "inline",
                "params": {
                    "column": "mmmkkekeke",
                    "expression": "ghijkmln_mygod_${(mmmkkekeke % 2) * 256 + (mmmkkekeke % 256)}"
                }
            },
            "keyGeneratorConfig": {
                "column": "1",
                "type": "NONE"
            }
        },
        {
            "logicalTable": "ghijkmln_mygod_lid",
            "actualDataNodes": "abcdef_ghijkmln_shard0.ghijkmln_mygod_lid_${0..255}, abcdef_ghijkmln_shard1.ghijkmln_mygod_lid_${256..511}",
            "databaseSharding": {
                "type": "inline",
                "params": {
                    "column": "mmmkkekeke",
                    "expression": "abcdef_ghijkmln_shard${mmmkkekeke % 2}"
                }
            },
            "tableSharding": {
                "type": "inline",
                "params": {
                    "column": "mmmkkekeke",
                    "expression": "ghijkmln_mygod_lid_${(mmmkkekeke % 2) * 256 + (mmmkkekeke % 256)}"
                }
            },
            "keyGeneratorConfig": {
                "column": "1",
                "type": "NONE"
            }
        },
        {
            "logicalTable": "team_student",
            "actualDataNodes": "abcdef_ghijkmln_shard0.team_student_${0..255}, abcdef_ghijkmln_shard1.team_student_${256..511}",
            "databaseSharding": {
                "type": "inline",
                "params": {
                    "column": "mmmkkekeke",
                    "expression": "abcdef_ghijkmln_shard${mmmkkekeke % 2}"
                }
            },
            "tableSharding": {
                "type": "inline",
                "params": {
                    "column": "mmmkkekeke",
                    "expression": "team_student_${(mmmkkekeke % 2) * 256 + (mmmkkekeke % 256)}"
                }
            },
            "keyGeneratorConfig": {
                "column": "1",
                "type": "NONE"
            }
        },
        {
            "logicalTable": "team_student_lid",
            "actualDataNodes": "abcdef_ghijkmln_shard0.team_student_lid_${0..255}, abcdef_ghijkmln_shard1.team_student_lid_${256..511}",
            "databaseSharding": {
                "type": "inline",
                "params": {
                    "column": "mmmkkekeke",
                    "expression": "abcdef_ghijkmln_shard${mmmkkekeke % 2}"
                }
            },
            "tableSharding": {
                "type": "inline",
                "params": {
                    "column": "mmmkkekeke",
                    "expression": "team_student_lid_${(mmmkkekeke % 2) * 256 + (mmmkkekeke % 256)}"
                }
            },
            "keyGeneratorConfig": {
                "column": "1",
                "type": "NONE"
            }
        },
        {
            "logicalTable": "ghijkmln_mygod_delivery",
            "actualDataNodes": "abcdef_ghijkmln_shard0.ghijkmln_mygod_delivery_${0..255}, abcdef_ghijkmln_shard1.ghijkmln_mygod_delivery_${256..511}",
            "databaseSharding": {
                "type": "inline",
                "params": {
                    "column": "mmmkkekeke",
                    "expression": "abcdef_ghijkmln_shard${mmmkkekeke % 2}"
                }
            },
            "tableSharding": {
                "type": "inline",
                "params": {
                    "column": "mmmkkekeke",
                    "expression": "ghijkmln_mygod_delivery_${(mmmkkekeke % 2) * 256 + (mmmkkekeke % 256)}"
                }
            },
            "keyGeneratorConfig": {
                "column": "1",
                "type": "NONE"
            }
        },
        {
            "logicalTable": "ghijkmln_mygod_tx_record",
            "actualDataNodes": "abcdef_ghijkmln_shard0.ghijkmln_mygod_tx_record_${0..255}, abcdef_ghijkmln_shard1.ghijkmln_mygod_tx_record_${256..511}",
            "databaseSharding": {
                "type": "inline",
                "params": {
                    "column": "mmmkkekeke",
                    "expression": "abcdef_ghijkmln_shard${mmmkkekeke % 2}"
                }
            },
            "tableSharding": {
                "type": "inline",
                "params": {
                    "column": "mmmkkekeke",
                    "expression": "ghijkmln_mygod_tx_record_${(mmmkkekeke % 2) * 256 + (mmmkkekeke % 256)}"
                }
            },
            "keyGeneratorConfig": {
                "column": "1",
                "type": "NONE"
            }
        }
        ],
        "dataSourceName": "ghijkmlnmygodShardDs"
    }
}

Expected behavior

Acutally behavior

How to Reproduce

Desktop (please complete the following information):
nacos版本1.3.0

Additional context
解决办法:在server端添加

@Configuration
public class TomcatConfig {

    @Bean
    public TomcatServletWebServerFactory webServerFactory() {
        TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
        factory.addConnectorCustomizers((Connector connector) -> {
            connector.setProperty("relaxedPathChars", "\"<>[\\]^`{|}");
            connector.setProperty("relaxedQueryChars", "\"<>[\\]^`{|}");
        });
        return factory;
    }
}

在项目配置文件中添加配置
server:
max-http-header-size: 10000000

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0