@@ -72,6 +72,7 @@ func (ctx *Context) Render(status int, body any) {
7272 ctx .Header ().Set (header .ContentType , qheader .BuildContentType (ctx .Mimetype (false ), ctx .Charset ()))
7373 if id := ctx .LanguageTag ().String (); id != "" {
7474 ctx .Header ().Set (header .ContentLanguage , id )
75+ ctx .Header ().Add (header .Vary , header .AcceptLanguage )
7576 }
7677
7778 data , err := ctx .Marshal (body )
@@ -93,7 +94,10 @@ func (ctx *Context) Render(status int, body any) {
9394}
9495
9596// Marshal 将对象 v 按用户要求编码并返回
96- func (ctx * Context ) Marshal (v any ) ([]byte , error ) { return ctx .outputMimetype .Marshal (ctx , v ) }
97+ func (ctx * Context ) Marshal (v any ) ([]byte , error ) {
98+ ctx .Header ().Add (header .Vary , header .Accept )
99+ return ctx .outputMimetype .Marshal (ctx , v )
100+ }
97101
98102// Wrote 是否已经有内容输出
99103func (ctx * Context ) Wrote () bool { return ctx .wrote }
@@ -116,6 +120,7 @@ func (ctx *Context) Write(bs []byte) (n int, err error) {
116120 closes := make ([]io.Closer , 0 , 2 )
117121
118122 if ctx .outputCompressor != nil {
123+ ctx .Header ().Add (header .Vary , header .AcceptEncoding )
119124 w , err := ctx .outputCompressor .NewEncoder (ctx .writer )
120125 if err != nil {
121126 return 0 , err
@@ -125,7 +130,7 @@ func (ctx *Context) Write(bs []byte) (n int, err error) {
125130 }
126131
127132 if ! qheader .CharsetIsNop (ctx .outputCharset ) {
128- ctx .Header ().Add (header .Vary , header .ContentEncoding ) // 只有在确定需要输出内容时才输出 Vary 报头
133+ ctx .Header ().Add (header .Vary , header .AcceptCharset )
129134 w := transform .NewWriter (ctx .writer , ctx .outputCharset .NewEncoder ())
130135 ctx .writer = w
131136 closes = append (closes , w )
0 commit comments