soulbird commented on code in PR #7794:
URL: https://github.com/apache/apisix/pull/7794#discussion_r955794646


##########
apisix/plugins/response-rewrite.lua:
##########
@@ -235,19 +343,28 @@ function _M.header_filter(conf, ctx)
         return
     end
 
-    --reform header from object into array, so can avoid use pairs, which is 
NYI
-    if not conf.headers_arr then
-        conf.headers_arr = {}
+    local hdr_op, err = core.lrucache.plugin_ctx(lrucache, ctx, nil,
+                                                 create_header_operation, 
conf.headers)
+    if not hdr_op then
+        core.log.error("failed to create header operation: ", err)
+        return
+    end
 
-        for field, value in pairs(conf.headers) do
-            core.table.insert_tail(conf.headers_arr, field, value)
-        end
+    local field_cnt = #hdr_op.add
+    for i = 1, field_cnt, 2 do
+        local val = core.utils.resolve_var(hdr_op.add[i+1], ctx.var)
+        ngx_resp.add_header(hdr_op.add[i], val)
     end
 
-    local field_cnt = #conf.headers_arr
+    local field_cnt = #hdr_op.set
     for i = 1, field_cnt, 2 do
-        local val = core.utils.resolve_var(conf.headers_arr[i+1], ctx.var)
-        ngx.header[conf.headers_arr[i]] = val
+        local val = core.utils.resolve_var(hdr_op.set[i+1], ctx.var)
+        ngx.header[hdr_op.set[i]] = val

Review Comment:
   `core.response.set_header` ?



##########
apisix/plugins/response-rewrite.lua:
##########
@@ -235,19 +343,28 @@ function _M.header_filter(conf, ctx)
         return
     end
 
-    --reform header from object into array, so can avoid use pairs, which is 
NYI
-    if not conf.headers_arr then
-        conf.headers_arr = {}
+    local hdr_op, err = core.lrucache.plugin_ctx(lrucache, ctx, nil,
+                                                 create_header_operation, 
conf.headers)
+    if not hdr_op then
+        core.log.error("failed to create header operation: ", err)
+        return
+    end
 
-        for field, value in pairs(conf.headers) do
-            core.table.insert_tail(conf.headers_arr, field, value)
-        end
+    local field_cnt = #hdr_op.add
+    for i = 1, field_cnt, 2 do
+        local val = core.utils.resolve_var(hdr_op.add[i+1], ctx.var)
+        ngx_resp.add_header(hdr_op.add[i], val)

Review Comment:
   Can we use `core.response.add_header` ?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to