Skip to content

Commit f2ab4e6

Browse files
Tobias Mønstertpeczek
authored andcommitted
Extract individual accepts headers and check for text/event-stream
1 parent a5d115f commit f2ab4e6

File tree

2 files changed

+25
-2
lines changed

2 files changed

+25
-2
lines changed

Lib.AspNetCore.ServerSentEvents/ServerSentEventsMiddleware.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -125,8 +125,8 @@ private bool CheckAcceptHeader(IHeaderDictionary requestHeaders)
125125
{
126126
return !_serverSentEventsOptions.RequireAcceptHeader;
127127
}
128-
129-
if (requestHeaders[Constants.ACCEPT_HTTP_HEADER].Any(acceptHeaderValue => acceptHeaderValue == Constants.SSE_CONTENT_TYPE))
128+
129+
if (requestHeaders.GetCommaSeparatedValues(Constants.ACCEPT_HTTP_HEADER).Any(acceptHeaderValue => acceptHeaderValue == Constants.SSE_CONTENT_TYPE))
130130
{
131131
return true;
132132
}

Test.AspNetCore.ServerSentEvents/Unit/Middleware/HandshakeTests.cs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,29 @@ public async Task Invoke_SseRequest_CallsOnPrepareAccept()
7272

7373
onPrepareAcceptMock.Verify(m => m(It.IsAny<HttpResponse>()), Times.Once);
7474
}
75+
76+
[Fact]
77+
public async Task Invoke_SseRequestWithMultipleAcceptHeadersWithEventStreamAcceptHeader_Accepts()
78+
{
79+
ServerSentEventsMiddleware<ServerSentEventsService> serverSentEventsMiddleware = SubjectUnderTestHelper.PrepareServerSentEventsMiddleware();
80+
HttpContext context = SubjectUnderTestHelper.PrepareHttpContext(acceptHeaderValue: SSE_CONTENT_TYPE+",text/html");
81+
82+
await serverSentEventsMiddleware.Invoke(context, null);
83+
84+
Assert.Equal(SSE_CONTENT_TYPE, context.Response.ContentType);
85+
}
86+
87+
[Fact]
88+
public async Task Invoke_SseRequestWithMultipleAcceptHeadersWithNotEventStreamAcceptHeader_DoesNotAccept()
89+
{
90+
ServerSentEventsMiddleware<ServerSentEventsService> serverSentEventsMiddleware = SubjectUnderTestHelper.PrepareServerSentEventsMiddleware();
91+
HttpContext context = SubjectUnderTestHelper.PrepareHttpContext(acceptHeaderValue: "text/plain,text/html");
92+
93+
await serverSentEventsMiddleware.Invoke(context, null);
94+
95+
Assert.Null(context.Response.ContentType);
96+
}
97+
7598
#endregion
7699
}
77100
}

0 commit comments

Comments
 (0)