为什么本地主机上的 Julia 服务器挂起?

Why does my Julia server on localhost hang?

我正在尝试在 Julia 中启动一个简单的服务器。 (Julia 1.7,HTTP v0.9.16,Windows 10)。

通过复制 HTTP 文档中的片段,我编写了

using HTTP
using Sockets
HTTP.serve(Sockets.localhost, 8000) do request::HTTP.Request 
    @show HTTP.header(request, "Content-Type")
    @show HTTP.payload(request)
    return HTTP.Response("Helllllo")
end

在 julia 终端中。

当我导航到 Chrome 中的 http://localhost:8000/ 时,它确实显示了一个包含单词“Helllllo”的页面。

但是,当我尝试向它发送 GET 请求时,它没有应答。我尝试过的事情:

发生的是该命令挂起,而不是生成 r

同样,无人接听。

我做错了什么?

谢谢!

几个不同的问题:

  1. 在设置普通 http 服务器后,您正在尝试从 https 地址读取数据。一旦你解决了这个问题,Julia 就能够得到一个请求-响应:

julia> r = HTTP.request("GET", "http://127.0.0.1:8000")
HTTP.Messages.Response:
"""
HTTP/1.1 200 OK
Transfer-Encoding: chunked

Helllllo"""
  1. 但它在浏览器中仍然失败(在 Firefox 中 - 我假设它在 Chrome 中是一样的)和

Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at http://127.0.0.1:8000/. (Reason: CORS request did not succeed).

这仅仅是因为 127.0.0.1 != localhost for browser, for security purposes(因此当您在 localhost 时,它不允许您从 127.0.0.1 的“不同”主机读取数据。如果你改为:

>> fetch("http://localhost:8000")
   .then(console.log)

Promise { <state>: "pending" }

Response { type: "basic", url: "http://localhost:8000/", redirected: false, status: 200, ok: true, statusText: "OK", headers: Headers, body: ReadableStream, bodyUsed: false }