Ajax 请求始终映射到 root
Ajax request mapped to root always
我的 ajax 请求总是映射到“/”,即使在指定了像“/ajax/file/upload”这样的完整路径之后也是如此
在我的控制器中,我有以下两种方法
@RequestMapping(value = "/")
public ModelAndView getView() {
}
@RequestMapping(value = "/ajax/file/upload", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
@ResponseBody
public String readFile(File file) {
}
在客户端,当我实例化一个 ajax 请求时,例如 "ajax/file/upload",该请求已被重定向到方法 "getView" 而不是 "readFile"。
我认为,发生这种情况是因为请求映射“/”也与模式 "ajax/file/upload" 匹配,但不确定。如果是这样,如何区分这两个映射?
I think, this happen because the request mapping "/" also matches the
pattern "ajax/file/upload"
Spring 将始终使用最佳匹配 来决定应使用哪种方法处理请求。
可能会发生以下情况:
- 如果在客户端发送 GET 请求而不是 POST 请求,最佳匹配是“/”,因为“/ajax/file/upload”只接受 POST 请求。您可以在浏览器网络 activity 中调试它以检查 request/response
的详细信息
- 如果您实施了安全措施,则需要检查您的 ajax 请求是否发送了正确的 cookies/authentication 令牌
另一件可能值得检查的事情是,如果您 ajax 请求发送 header "Accept: application/json" 或 "Accept: /"
我的 ajax 请求总是映射到“/”,即使在指定了像“/ajax/file/upload”这样的完整路径之后也是如此
在我的控制器中,我有以下两种方法
@RequestMapping(value = "/")
public ModelAndView getView() {
}
@RequestMapping(value = "/ajax/file/upload", produces = MediaType.APPLICATION_JSON_VALUE, method = RequestMethod.POST)
@ResponseBody
public String readFile(File file) {
}
在客户端,当我实例化一个 ajax 请求时,例如 "ajax/file/upload",该请求已被重定向到方法 "getView" 而不是 "readFile"。
我认为,发生这种情况是因为请求映射“/”也与模式 "ajax/file/upload" 匹配,但不确定。如果是这样,如何区分这两个映射?
I think, this happen because the request mapping "/" also matches the pattern "ajax/file/upload"
Spring 将始终使用最佳匹配 来决定应使用哪种方法处理请求。
可能会发生以下情况:
- 如果在客户端发送 GET 请求而不是 POST 请求,最佳匹配是“/”,因为“/ajax/file/upload”只接受 POST 请求。您可以在浏览器网络 activity 中调试它以检查 request/response 的详细信息
- 如果您实施了安全措施,则需要检查您的 ajax 请求是否发送了正确的 cookies/authentication 令牌
另一件可能值得检查的事情是,如果您 ajax 请求发送 header "Accept: application/json" 或 "Accept: /"