【问题标题】:Why can I not access this Rust simple server from the Internet?为什么我不能从 Internet 访问这个 Rust 简单服务器?
【发布时间】:2019-05-22 20:38:59
【问题描述】:

我有以下服务器:

extern crate simple_server;
use crate::simple_server::*;

fn main() {
    let host = "127.0.0.1";
    let port = "7878";

    let server = Server::new(|request, mut response| {
        println!("Request received. {} {}", request.method(), request.uri());
        println!("=============BODY=================");
        let mut v: Vec<u8> = Vec::new();
        for b in request.body().iter() {
            v.push(*b);
        }
        let body_as_str = String::from_utf8(v);

        match body_as_str {
            Ok(strr) => println!("{}", strr),
            Err(e) => println!("{}", e),
        }

        //ROUTING
        match (request.method(), request.uri().path()) {
            (&Method::GET, "/") => {
                Ok(response.body("<h1>Hi!</h1><p>Hello hacker!</p>".as_bytes().to_vec())?)
            }
            (&Method::POST, "/") => {
                Ok(response.body("<h1>Hi!</h1><p>Hello hacker!</p>".as_bytes().to_vec())?)
            }
            (_, _) => {
                response.status(StatusCode::NOT_FOUND);
                Ok(response.body("<h1>404</h1><p>Not found!<p>".as_bytes().to_vec())?)
            }
        }
    });
    println!("Listening on: {} port {}", host, port);
    server.listen(host, port);
}

我无法从 Internet 访问指向 http://my_server_ip:7878/ 的页面。

我将服务器的防火墙设置为允许7878 上的所有服务器,此外,其他简单服务器在配置为侦听该端口时工作得很好,这让我认为这是我的特定 Rust 应用程序的代码问题。运行良好的服务器示例是 npm 上的静态服务器。

但是,当我通过转到"127.0.0.1:7878" 在我的构建机器上测试此应用程序时,它工作正常。

【问题讨论】:

    标签: web-services rust


    【解决方案1】:

    通过将"127.0.0.1" 用于host 变量,您拒绝了任何不是来自该地址的连接。使用"0.0.0.0",例如未指定的地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-28
      • 2022-07-28
      • 2023-04-05
      • 2014-06-22
      • 2020-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多