springboot對象返回,一直報生成json異常,經過檢查,發現是自己在做xss防護時對出參進行了json的處理(copy代碼不可取,囧)
異常信息
這里進行了出參處理了,但實際上只要對入參處理就行了,把這個類改成入參處理即可
public class XssStringJsonSerializer extends JsonSerializer<String> { @Override public Class<String> handledType() { return String.class; } @Override public void serialize(String s, JsonGenerator jsonGenerator, SerializerProvider serializerProvider) throws IOException { if (s == null) { String encodedValue = StringEscapeUtils.escapeHtml4(s); jsonGenerator.writeString(encodedValue); } }
即
//入參檢查 public class XssStringJsonSerializer extends JsonDeserializer<String> { public XssStringJsonSerializer(Class<String> string) { super(); } @Override public String deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException, JsonProcessingException { String value = jsonParser.getValueAsString(); if (value != null){ return StringEscapeUtils.escapeHtml4(value.toString()); } return value; } @Override public Class<String> handledType() { return String.class; } }
耽誤了一小時代碼排除,xss防護copy別人代碼的。。。沒理解就用的下場。。