我正在嘗試在 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
在朱莉婭終端。
當我http://localhost:8000/在 Chrome 中導航時,它確實顯示了一個帶有“Helllllo”字樣的頁面。
但是,當我嘗試向它發送 GET 請求時,它沒有回應。我嘗試過的事情:
打開一個新的 julia 終端并撰寫
using HTTP r = HTTP.request("GET", "https://127.0.0.1:8000");
發生的情況是此命令掛起,而不是生成r.
進入 Chrome 控制臺并撰寫
fetch("https://127.0.0.1:8000") .then(res => res.json()) .then(console.log)
再次,沒有答案。
我究竟做錯了什么?
謝謝!
uj5u.com熱心網友回復:
幾個不同的問題:
https在設定普通http服務器后,您正在嘗試從地址讀取。一旦你解決了這個問題,Julia 就能夠得到一個請求回應:
julia> r = HTTP.request("GET", "http://127.0.0.1:8000")
HTTP.Messages.Response:
"""
HTTP/1.1 200 OK
Transfer-Encoding: chunked
Helllllo"""
- 但它仍然在瀏覽器中失敗(在 Firefox 中 - 我認為它在 Chrome 中是一樣的)
跨域請求被阻止:同源策略不允許讀取位于http://127.0.0.1:8000/的遠程資源。(原因:CORS 請求沒有成功)。
這完全是因為127.0.0.1!=為瀏覽器本地主機,為了安全起見,(所以它不會讓你從“不同”主機在讀127.0.0.1,而你的localhost)。如果你這樣做:
>> 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 }
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/368940.html
上一篇:在反應中的彈出視窗中顯示結果
下一篇:當我嘗試獲取api時,出現此錯誤:“型別'List<dynamic>'不是型別'Map<String,dynamic>”的子型別
