Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
caddy
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
nexedi
caddy
Commits
c9b022b5
Commit
c9b022b5
authored
Sep 16, 2016
by
Tw
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
proxy: don't append some predefined headers
fix issue #1086 Signed-off-by:
Tw
<
tw19881113@gmail.com
>
parent
4670d13c
Changes
2
Show whitespace changes
Inline
Side-by-side
Showing
2 changed files
with
42 additions
and
0 deletions
+42
-0
caddyhttp/proxy/proxy_test.go
caddyhttp/proxy/proxy_test.go
+22
-0
caddyhttp/proxy/reverseproxy.go
caddyhttp/proxy/reverseproxy.go
+20
-0
No files found.
caddyhttp/proxy/proxy_test.go
View file @
c9b022b5
...
@@ -450,6 +450,8 @@ func TestDownstreamHeadersUpdate(t *testing.T) {
...
@@ -450,6 +450,8 @@ func TestDownstreamHeadersUpdate(t *testing.T) {
w
.
Header
()
.
Add
(
"Merge-Me"
,
"Initial"
)
w
.
Header
()
.
Add
(
"Merge-Me"
,
"Initial"
)
w
.
Header
()
.
Add
(
"Remove-Me"
,
"Remove-Value"
)
w
.
Header
()
.
Add
(
"Remove-Me"
,
"Remove-Value"
)
w
.
Header
()
.
Add
(
"Replace-Me"
,
"Replace-Value"
)
w
.
Header
()
.
Add
(
"Replace-Me"
,
"Replace-Value"
)
w
.
Header
()
.
Add
(
"Content-Type"
,
"text/html"
)
w
.
Header
()
.
Add
(
"Overwrite-Me"
,
"Overwrite-Value"
)
w
.
Write
([]
byte
(
"Hello, client"
))
w
.
Write
([]
byte
(
"Hello, client"
))
}))
}))
defer
backend
.
Close
()
defer
backend
.
Close
()
...
@@ -473,6 +475,10 @@ func TestDownstreamHeadersUpdate(t *testing.T) {
...
@@ -473,6 +475,10 @@ func TestDownstreamHeadersUpdate(t *testing.T) {
t
.
Fatalf
(
"Failed to create request: %v"
,
err
)
t
.
Fatalf
(
"Failed to create request: %v"
,
err
)
}
}
w
:=
httptest
.
NewRecorder
()
w
:=
httptest
.
NewRecorder
()
// set a predefined skip header
w
.
Header
()
.
Set
(
"Content-Type"
,
"text/css"
)
// set a predefined overwritten header
w
.
Header
()
.
Set
(
"Overwrite-Me"
,
"Initial"
)
p
.
ServeHTTP
(
w
,
r
)
p
.
ServeHTTP
(
w
,
r
)
...
@@ -507,6 +513,22 @@ func TestDownstreamHeadersUpdate(t *testing.T) {
...
@@ -507,6 +513,22 @@ func TestDownstreamHeadersUpdate(t *testing.T) {
t
.
Errorf
(
"Downstream response does not contain expected %s header: expect %v, but got %v"
,
t
.
Errorf
(
"Downstream response does not contain expected %s header: expect %v, but got %v"
,
headerKey
,
expect
,
got
)
headerKey
,
expect
,
got
)
}
}
headerKey
=
"Content-Type"
got
=
actualHeaders
[
headerKey
]
expect
=
[]
string
{
"text/css"
}
if
!
reflect
.
DeepEqual
(
got
,
expect
)
{
t
.
Errorf
(
"Downstream response does not contain expected %s header: expect %v, but got %v"
,
headerKey
,
expect
,
got
)
}
headerKey
=
"Overwrite-Me"
got
=
actualHeaders
[
headerKey
]
expect
=
[]
string
{
"Overwrite-Value"
}
if
!
reflect
.
DeepEqual
(
got
,
expect
)
{
t
.
Errorf
(
"Downstream response does not contain expected %s header: expect %v, but got %v"
,
headerKey
,
expect
,
got
)
}
}
}
var
(
var
(
...
...
caddyhttp/proxy/reverseproxy.go
View file @
c9b022b5
...
@@ -252,8 +252,28 @@ func (rp *ReverseProxy) copyResponse(dst io.Writer, src io.Reader) {
...
@@ -252,8 +252,28 @@ func (rp *ReverseProxy) copyResponse(dst io.Writer, src io.Reader) {
io
.
CopyBuffer
(
dst
,
src
,
buf
.
([]
byte
))
io
.
CopyBuffer
(
dst
,
src
,
buf
.
([]
byte
))
}
}
// skip these headers if they already exist.
// see https://github.com/mholt/caddy/pull/1112#discussion_r80092582
var
skipHeaders
=
map
[
string
]
struct
{}{
"Content-Type"
:
{},
"Content-Disposition"
:
{},
"Accept-Ranges"
:
{},
"Set-Cookie"
:
{},
"Cache-Control"
:
{},
"Expires"
:
{},
}
func
copyHeader
(
dst
,
src
http
.
Header
)
{
func
copyHeader
(
dst
,
src
http
.
Header
)
{
for
k
,
vv
:=
range
src
{
for
k
,
vv
:=
range
src
{
if
_
,
ok
:=
dst
[
k
];
ok
{
// skip some predefined headers
// see https://github.com/mholt/caddy/issues/1086
if
_
,
shouldSkip
:=
skipHeaders
[
k
];
shouldSkip
{
continue
}
// otherwise, overwrite
dst
.
Del
(
k
)
}
for
_
,
v
:=
range
vv
{
for
_
,
v
:=
range
vv
{
dst
.
Add
(
k
,
v
)
dst
.
Add
(
k
,
v
)
}
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment