1

在客户端,javascript代码:

<script src="api/api.js?v=1.x&key=abjas23456asg" type="text/javascript"></script>

当浏览器遇到这条线时,我猜它会向服务器发送获取请求并获取 api.js 中的内容。

但我想处理这个get请求,并根据参数v和key对内容做一些其他的修剪。

例如:

当密钥无效时,我们只返回一个警报字符串,而不是真正的 api。

4

1 回答 1

0

为了做到这一点,你需要首先配置你的 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>
于 2012-07-11T07:12:36.743 回答