在客户端,javascript代码:
<script src="api/api.js?v=1.x&key=abjas23456asg" type="text/javascript"></script>
当浏览器遇到这一行时,我猜它会向服务器发送get请求并获取api.js中的内容。
但是我想处理这个get请求,并根据v和key的参数对内容做一些其他的修剪。
例如:
当密钥无效时,我们只返回一个警告字符串,但不是真正的api。
答案 0 :(得分:0)
为了做到这一点,你需要先配置你的web.xml,它将.js的请求重定向到spring而不是直接服务。
然后您需要使用HandlerInterceptorAdapter编写Request Handler来拦截请求并验证关键参数。如果它不可用,那么只需按下警报代码,不要通过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
}
}
}
for web context xml
<mvc:interceptors>
<bean class="MyHandler " />
</mvc:interceptors>