1.背景
需要做一个微信分享的后端支持接口,请求响应中包含appid,为了避免对外暴露配置相应的安全策略
2.步骤
限制请求域名
在后端cors过滤器中添加指定的域名作为allowedOrigins的值,非此域名无法访问接口\
@Configuration
public class CorsConfig implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry registry) {
registry.addMapping("/**")
.allowedOrigins("aa.bb.cc")
.allowCredentials(true)
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
.maxAge(3600);
}
}
限制请求来源
在后端读取referer值判断是否是规定的来源页,否则禁止调用
String referer = request.getHeader("referer");
String pattern = "^http://h5.zwlearn.com/yifu.*$";
if (referer == null || !Pattern.matches(pattern, referer)) {
throw new RRException("禁止调用");
}