Skip to content
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

Remove CORS logic #851

Merged
merged 49 commits into from
Aug 16, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
49 commits
Select commit Hold shift + click to select a range
8b2189a
http: Add inner server data structure
lexnv Jul 25, 2022
669a43b
http: Handle RPC messages
lexnv Jul 25, 2022
aa0936a
http: Implement equivalent of `service_fn`
lexnv Jul 25, 2022
50725dc
http: Implement equivalent of `make_service_fn`
lexnv Jul 25, 2022
aab7f31
http: Expose `tower` compatible service
lexnv Jul 25, 2022
569f2b6
http: Prebuild http server with optional listener
lexnv Jul 25, 2022
7c74b0f
examples: WIP tower service
lexnv Jul 25, 2022
e2da10c
http: Fix warnings
lexnv Jul 27, 2022
26871de
tower_http: Fix warnings
lexnv Jul 27, 2022
1e7dcdf
http: Ensure service works with tower
lexnv Jul 27, 2022
50b9a0c
http: Remove `RPSeeServerMakeSvc` to allow further flexibility
lexnv Jul 27, 2022
25e3317
tower_http: Fix warnings
lexnv Jul 27, 2022
5af1282
tower_http: Resubmit the same request for testing
lexnv Jul 27, 2022
e8fa8b5
http: Transform builder into service directly
lexnv Jul 27, 2022
52ef967
http: Rename `RPSeeServerSvc` into user friendly `TowerService`
lexnv Jul 27, 2022
172b6f7
http: Rely on internal TowerService to handle requests
lexnv Jul 27, 2022
45a8105
Fix middleware typo
lexnv Jul 27, 2022
bd0e687
http-server: Improve API builder for tower service
lexnv Aug 8, 2022
75d5fc2
Merge remote-tracking branch 'origin/master' into poc_middleware_laye…
lexnv Aug 8, 2022
0f43236
Rename the inner service data and check comments
lexnv Aug 8, 2022
c328f86
examples: Add comments
lexnv Aug 8, 2022
602d481
http-server: Receive tower service builder as param
lexnv Aug 9, 2022
d64d1af
examples: Adjust tower_http example
lexnv Aug 9, 2022
69441f3
http-server: Add tower middleware on the HttpBuilder
lexnv Aug 9, 2022
47c1b4d
http-server: Do not expose the internal `TowerService` for now
lexnv Aug 9, 2022
7369bcb
Update http-server/src/server.rs
lexnv Aug 9, 2022
c026b0a
http-server: Use `std::error::Error`
lexnv Aug 10, 2022
de1276d
Fix fmt
lexnv Aug 10, 2022
5519222
http-server: Remove header and CORS validation
lexnv Aug 10, 2022
fa373b3
core: Remove CORS logic
lexnv Aug 10, 2022
1578163
examples: Add custom CORS layer to the RPC
lexnv Aug 11, 2022
4427f2a
Merge remote-tracking branch 'origin/master' into poc_middleware_laye…
niklasad1 Aug 12, 2022
e2f1ed5
address some grumbles
niklasad1 Aug 12, 2022
3801eb3
fix more grumbles: no more Infallible
niklasad1 Aug 12, 2022
6aa8b4f
make clippy happy
niklasad1 Aug 12, 2022
5685da9
Rename tower http example
lexnv Aug 12, 2022
76a9475
http-server: Remove handling of OPTIONS request
lexnv Aug 12, 2022
21a247a
tests: Test CORS with external layers
lexnv Aug 12, 2022
fa2a091
examples: Document access control and external CORS layer
lexnv Aug 12, 2022
e14e25b
Merge remote-tracking branch 'origin/poc_middleware_layer_v4' into re…
lexnv Aug 12, 2022
98488bc
Merge remote-tracking branch 'origin/master' into remove_cors_v2
lexnv Aug 12, 2022
750fb2f
Remove unused deps
lexnv Aug 12, 2022
3b7ca5d
remove unused CORS code
niklasad1 Aug 15, 2022
0e8a74c
Remove extra lifetime param
lexnv Aug 15, 2022
f26b401
Rename `invalid_allow_origin` to `origin_rejected`
lexnv Aug 15, 2022
f8783cc
Fix clippy
lexnv Aug 15, 2022
d8a32d8
Update core/src/server/access_control/origin.rs
lexnv Aug 15, 2022
a6cf3f8
Rename `AnyNonNull` to `Wildcard`
lexnv Aug 15, 2022
9857e7f
Rename `OriginType` to `Origin`
lexnv Aug 15, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,6 @@ tokio = { version = "1.16", optional = true }
wasm-bindgen-futures = { version = "0.4.19", optional = true }
futures-timer = { version = "3", optional = true }
globset = { version = "0.4", optional = true }
lazy_static = { version = "1", optional = true }
unicase = { version = "2.6.0", optional = true }
http = { version = "0.2.7", optional = true }

[features]
Expand All @@ -48,8 +46,6 @@ server = [
"rand",
"tokio/rt",
"tokio/sync",
"lazy_static",
"unicase",
"http",
"hyper",
]
Expand Down
33 changes: 1 addition & 32 deletions core/src/http_helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,21 +105,9 @@ pub fn read_header_values<'a>(
headers.get_all(header_name)
}

/// Get the header values from the `access-control-request-headers` header.
pub fn get_cors_request_headers<'a>(headers: &'a hyper::header::HeaderMap) -> impl Iterator<Item = &str> {
const ACCESS_CONTROL_REQUEST_HEADERS: &str = "access-control-request-headers";

read_header_values(headers, ACCESS_CONTROL_REQUEST_HEADERS)
.iter()
.filter_map(|val| val.to_str().ok())
.flat_map(|val| val.split(','))
// The strings themselves might contain leading and trailing whitespaces
.map(|s| s.trim())
}

#[cfg(test)]
mod tests {
use super::{get_cors_request_headers, read_body, read_header_content_length};
use super::{read_body, read_header_content_length};

#[tokio::test]
async fn body_to_bytes_size_limit_works() {
Expand All @@ -144,23 +132,4 @@ mod tests {
headers.insert(hyper::header::CONTENT_LENGTH, "18446744073709551616".parse().unwrap());
assert_eq!(read_header_content_length(&headers), None);
}

#[test]
fn get_cors_headers_works() {
let mut headers = hyper::header::HeaderMap::new();

// access-control-request-headers
headers.insert(hyper::header::ACCESS_CONTROL_REQUEST_HEADERS, "Content-Type,x-requested-with".parse().unwrap());

let values: Vec<&str> = get_cors_request_headers(&headers).collect();
assert_eq!(values, vec!["Content-Type", "x-requested-with"]);

headers.insert(
hyper::header::ACCESS_CONTROL_REQUEST_HEADERS,
"Content-Type, x-requested-with ".parse().unwrap(),
);

let values: Vec<&str> = get_cors_request_headers(&headers).collect();
assert_eq!(values, vec!["Content-Type", "x-requested-with"]);
}
}
Loading