在客户端,javascript代码:
<script src="api/api.js?v=1.x&key=abjas23456asg" type="text/javascript"></script>
当浏览器遇到这条线时,我猜它会向服务器发送获取请求并获取 api.js 中的内容。
但我想处理这个get请求,并根据参数v和key对内容做一些其他的修剪。
例如:
当密钥无效时,我们只返回一个警报字符串,而不是真正的 api。
在客户端,javascript代码:
<script src="api/api.js?v=1.x&key=abjas23456asg" type="text/javascript"></script>
当浏览器遇到这条线时,我猜它会向服务器发送获取请求并获取 api.js 中的内容。
但我想处理这个get请求,并根据参数v和key对内容做一些其他的修剪。
例如:
当密钥无效时,我们只返回一个警报字符串,而不是真正的 api。
为了做到这一点,你需要首先配置你的 web.xml,它将 .js 的请求重定向到 spring 而不是直接服务。
那么您将需要使用 HandlerInterceptorAdapter 编写请求处理程序来拦截请求并验证关键参数。如果它不可用,则只需推送警报代码,并且不允许通过发送作为 preHandle 的结果的 flase 来处理进一步的请求链。
你可以使用映射静态资源
<mvc:resources mapping="/api/**" location="/api-folder/"/>
要为您可以设置的所有资源配置 web.xml
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>*</url-pattern>
</servlet-mapping>
对于 HandlerInterceptor
@Component
public class MyHandler extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception {
String key=request.getParameter("key");
if(invalid) {
write alert to response
return false;
}else{
// let spring serve your static content
}
}
}
对于 web 上下文 xml
<mvc:interceptors>
<bean class="MyHandler " />
</mvc:interceptors>