Crates.io | wasi-experimental-http-wasmtime |
lib.rs | wasi-experimental-http-wasmtime |
version | 0.10.0 |
source | src |
created_at | 2021-03-08 23:01:46.445933 |
updated_at | 2022-06-15 14:54:31.648613 |
description | Experimental HTTP library for WebAssembly in Wasmtime |
homepage | |
repository | https://github.com/deislabs/wasi-experimental-http |
max_upload_size | |
id | 365893 |
size | 27,286 |
wasi-experimental-http-wasmtime
Experimental HTTP library for WebAssembly in Wasmtime
The easiest way to add support is by using the Wasmtime linker:
let store = Store::default();
let mut linker = Linker::new(&store);
let wasi = Wasi::new(&store, ctx);
// link the WASI core functions
wasi.add_to_linker(&mut linker)?;
// link the experimental HTTP support
let allowed_hosts = Some(vec!["https://postman-echo.com".to_string()]);
let max_concurrent_requests = Some(42);
let http = HttpCtx::new(allowed_domains, max_concurrent_requests)?;
http.add_to_linker(&mut linker)?;
The Wasmtime implementation also enables allowed domains - an optional and
configurable list of domains or hosts that guest modules are allowed to send
requests to. If None
or an empty vector is passed, guest modules are NOT
allowed to make HTTP requests to any server. (Note that the hosts passed MUST
have the protocol also specified - i.e. https://my-domain.com
, or
http://192.168.0.1
, and if making requests to a subdomain, the subdomain MUST
be in the allowed list. See the the library tests for more examples).