Open
Description
Sorry, I didn't get what do you mean. I need to configure something to make it work?
@Pzixel I was able to configure https requests by following
awc_https
example.// src/main.rs use actix_web::client::{Client, Connector}; use openssl::ssl::{SslConnector, SslMethod}; #[actix_rt::main] async fn main() { let builder = SslConnector::builder(SslMethod::tls()).unwrap(); let client = Client::build() .connector(Connector::new().ssl(builder.build()).finish()) .finish(); // Create request builder and send request let response = client .get("https://www.rust-lang.org") // <--- notice the "s" in "https://..." .header("User-Agent", "Actix-web") .send() .await; // <- Send http request println!("Response: {:?}", response); }Which returns
ClientResponse HTTP/1.1 200 OK headers: "strict-transport-security": "max-age=63072000" "x-amz-cf-id": "nQUn97FTnU4iEG8giZxGeePvVyqrzp8jYsPspK2OvhrtFEMLIrdYiw==" "x-cache": "Miss from cloudfront" "x-xss-protection": "1; mode=block" "x-content-type-options": "nosniff" "via": "1.1 vegur, 1.1 650962b00c259fe47c193b15b2fe4b88.cloudfront.net (CloudFront)" "x-amz-cf-pop": "VIE50-C1" "content-security-policy": "default-src 'self'; frame-ancestors 'self'; img-src 'self' avatars.githubusercontent.com; frame-src 'self' player.vimeo.com" "content-length": "19220" "referrer-policy": "no-referrer, strict-origin-when-cross-origin" "vary": "Accept-Encoding" "server": "Rocket" "content-type": "text/html; charset=utf-8" "date": "Tue, 02 Jun 2020 10:51:59 GMT" "connection": "keep-alive" )
This is strange, but example never work on my machine, i always get something like:
Response on post: Err(
Connect(
Io(
Custom {
kind: Other,
error: "the handshake failed: error:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed:ssl\\statem\\statem_clnt.c:1915:: unable to get local issuer certificate",
},
),
),
)
The only way to make it work is to disable verification completely (which is not a case to work with)
async fn index(_req: HttpRequest) -> HttpResponse {
let mut builder = SslConnector::builder(SslMethod::tls()).unwrap();
builder.set_verify(SslVerifyMode::NONE);
let client = Client::build()
.connector(Connector::new().ssl(builder.build()).finish())
.finish();
let now = std::time::Instant::now();
let payload =
client
.get("https://upload.wikimedia.org/wikipedia/commons/f/ff/Pizigani_1367_Chart_10MB.jpg")
.send()
.await
.unwrap()
.body()
.limit(20_000_000) // sets max allowable payload size
.await
.unwrap();
Can anybody verify this example works out of the box on his machine? (
examples/awc_https/src/main.rs
Lines 8 to 12 in 22c8eaa
Also my "rustup show":
stable-x86_64-pc-windows-gnu (default)
rustc 1.43.1 (8d69840ab 2020-05-04)
I using windows 10 x64
Originally posted by @Zhappa in actix/actix-web#1045 (comment)