react路由器与spring引导路由冲突

h7appiyu  于 2021-07-16  发布在  Java
关注(0)|答案(1)|浏览(494)

我正在创建SpringBoot应用程序,在前端使用react。我可以在浏览器中打开该页,但在后端显示错误:

RequestRejectedException: The request was rejected because the URL contained a potentially malicious String "//"

所以我有一个简单的java视图控制器:

@Controller
public class ViewController {
    @RequestMapping("/")
    public String index() {
        return "index";
    }
}

它返回html:

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8" http-equiv="CONTENT-TYPE" content="text/html; charset=UTF-8"/>
    <title>Hello demo</title>
<link href="/build/react_app.css" rel="stylesheet"></head>
<body>
<div id="react"></div>
<script src="/build/js/main.min.js"></script><script src="/build/js/react_app.min.js"></script></body>
</html>

所以在react应用程序中,我连接了react路由器,下面是我的index.js:

const middleware = [thunk, createLogger()];
let container = document.getElementById('react');

const store = createStore(
    reducer,
    compose(applyMiddleware(...middleware))
);

ReactDOM.render(
    <Provider store={store}>
        <Router history={hashHistory}>
            <Switch>
                <Route exact path="/" component={MainPage}/>
                <Route exact path="/login" component={LoginPage}/>
                <Route exact path="/registration" component={RegistryPage}/>
                <Route path="*" component={NotFound}/>
            </Switch>
        </Router>
    </Provider>,
    container
);

export default store;

所以基本上我可以访问主页,它呈现好。我可以在路由之间切换,但在同一时间在后端我看到错误。我调试并意识到为什么会这样。主页的url为

http://localhost:8080/#/

如果我使用url http://localhost:8080/# 没关系,也没有例外。我怎样才能解决这个问题?如果我去掉其中的一个斜线就不能正常工作

6tdlim6h

6tdlim6h1#

在构建单页应用程序时,应该使用 @RequestMapping("/**") 在后端,否则你会得到一个404如果你试图达到一个不同的网页比主页。

相关问题