-
Notifications
You must be signed in to change notification settings - Fork 24.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Android][Websockets] - Origin header check shouldn't be case sensitive #27827
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This makes sense, thank you!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@cpojer is landing this pull request. If you are a Facebook employee, you can view this diff on Phabricator.
This pull request was successfully merged by @brunobar79 in aeaf286. When will my fix make it into a release? | Upcoming Releases |
Summary: Based on [this](https://stackoverflow.com/a/5259004), header names are not case sensitive. That means that it's valid to pass a header `Origin` or `origin`. With the current implementation. on Android only, if you pass `Origin`, it will get overwritten by the default origin. This made me waste a lot of time debugging a problem while trying to connect to a websockets server that required an `origin` header and my implementation was working fine in iOS but not on Android, so I'm suggest changing the logic a little bit to take that into account. ## Changelog [Android] [Fixed] - Support for case insensitive "Origin" headers for Websockets Pull Request resolved: facebook#27827 Test Plan: Here's a screenshot of that shows the issue before the fix (`Origin` header set, but getting overridden)  The fix is not that easy to test since it requires a public websocket server that checks for a custom Origin header, but I think the code changes are very small and clear. Differential Revision: D19578860 Pulled By: cpojer fbshipit-source-id: d854e887d1b9e8e54da662b2da2ebe08ce65fdbc
Summary
Based on this, header names are not case sensitive.
That means that it's valid to pass a header
Origin
ororigin
.With the current implementation. on Android only, if you pass
Origin
, it will get overwritten by the default origin.This made me waste a lot of time debugging a problem while trying to connect to a websockets server that required an
origin
header and my implementation was working fine in iOS but not on Android, so I'm suggest changing the logic a little bit to take that into account.Changelog
[Android] [Fixed] - Support for case insensitive "Origin" headers for Websockets
Test Plan
Here's a screenshot of that shows the issue before the fix (
Origin
header set, but getting overridden)The fix is not that easy to test since it requires a public websocket server that checks for a custom Origin header, but I think the code changes are very small and clear.