Skip to content

Commit f785afe

Browse files
authored
Send response headers on meta even without event (#3653)
1 parent 6eb0128 commit f785afe

File tree

4 files changed

+32
-1
lines changed

4 files changed

+32
-1
lines changed

appsec/src/extension/tags.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -535,6 +535,7 @@ static void _add_basic_tags_to_meta(
535535
_dd_http_client_ip(meta_ht);
536536

537537
_dd_request_headers(meta_ht, _server, headers);
538+
_dd_response_headers(meta_ht);
538539
}
539540

540541
// NOLINTNEXTLINE(bugprone-easily-swappable-parameters)

appsec/tests/extension/ancillary_tags.phpt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,4 +126,8 @@ Array
126126
[http.request.headers.x-cloud-trace-context] => cloudtracecontext
127127
[http.request.headers.x-sigsci-requestid] => sigscirequestid
128128
[http.request.headers.x-sigsci-tags] => sigscitags
129+
[http.response.headers.content-encoding] => foobar
130+
[http.response.headers.content-language] => pt_PT
131+
[http.response.headers.content-length] => 42
132+
[http.response.headers.content-type] => application/json
129133
)

appsec/tests/integration/src/test/groovy/com/datadog/appsec/php/integration/CommonTests.groovy

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,26 @@ trait CommonTests {
225225
assert span.meta."_dd.appsec.event_rules.version" != ''
226226
}
227227

228+
@Test
229+
void 'trace without event'() {
230+
def respContentType = null
231+
def respContentLength = null
232+
def trace = container.traceFromRequest('/hello.php') { HttpResponse<InputStream> resp ->
233+
assert resp.statusCode() == 200
234+
def headerContentType = resp.headers().firstValue('Content-Type')
235+
if (headerContentType.isPresent()) {
236+
respContentType = headerContentType.get()
237+
}
238+
}
239+
240+
Span span = trace.first()
241+
assert span.metrics."_dd.appsec.enabled" == 1.0d
242+
assert respContentType != null && respContentType.length() > 0
243+
assert span.meta."http.response.headers.content-type" == respContentType
244+
assert span.meta."http.response.headers.content-encoding" == 'foobar'
245+
assert span.meta."http.response.headers.content-language" == 'en'
246+
}
247+
228248
@Test
229249
void 'trace with an attack'() {
230250
HttpRequest req = container.buildReq('/hello.php')
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
11
<?php
2-
echo 'Hello world!';
2+
header('Content-Encoding: foobar');
3+
header('Content-Language: en');
4+
5+
$content = "Hello world!";
6+
7+
echo $content;
8+

0 commit comments

Comments
 (0)