JAX - RS 示例:从内容 MD5 拦截器到聊天服务及 EJB 集成
1. 实现 Content - MD5 头的 WriterInterceptor
在 HTTP 通信中,Content - MD5 头可用于对 HTTP 消息体进行端到端的消息完整性检查。虽然它不能抵御恶意攻击,但能检测消息体在传输过程中是否被意外修改,比如被代理、缓存或其他中间件转换。以下是实现该功能的详细步骤:
1.1 实现 WriterInterceptor
import javax.ws.rs.WebApplicationException;
import javax.ws.rs.ext.WriterInterceptor;
import javax.ws.rs.ext.WriterInterceptorContext;
import java.io.ByteArrayOutputStream;
import java.io.DigestOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.jboss.resteasy.util.Base64;
public class ContentMD5Writer implements WriterInterceptor {
@Override
public void aroundWriteTo(Writer