gpt4 book ai didi

Haskell Scotty 和 Elm Http NetworkError

转载 作者:行者123 更新时间:2023-12-02 17:10:44 39 4
gpt4 key购买 nike

我想研究一下使用 haskell 进行后端和 elm 进行前端的 Web 开发。所以我写了这两个简单的“hello world”代码代码片段

榆树:

import Html exposing (..)
import Html.Events exposing (..)
import Http
import Json.Decode as Decode

main : Program Never Model Msg
main = Html.program
{ view = view
, update = update
, init = ("default", Cmd.none)
, subscriptions = \_ -> Sub.none }

type alias Model = String

type Msg = Get | Response (Result Http.Error String)

update : Msg -> Model -> (Model, Cmd Msg)
update msg model = case msg of
Get -> (model, get)
Response (Ok s) -> (s, Cmd.none)
Response (Err e) -> (toString e, Cmd.none)


view : Model -> Html Msg
view model = div []
[button [onClick (Get)] [text "click me"],
text model]


get : Cmd Msg
get = let url = "http://localhost:3000/get"
in Http.send Response (Http.get url Decode.string)

haskell /斯科蒂:

import Web.Scotty

main = scotty 3000 $ get "/get" $ json ("hello world" :: String)

两者都可以完美地独立工作 - 这意味着 elm 代码可以从 httpbin 等服务器获取数据,而 scotty 服务器可以处理我使用浏览器或 wget/curl 等工具发送的请求,但是当我尝试将两者一起使用时elm 中的 http.send 调用返回网络错误

我怀疑这可能是两个服务器托管在同一台计算机上的问题(不知道为什么,但我想消除这种可能性),因此我将客户端站点托管在另一台计算机上,我知道该计算机具有有效的连接托管 spock 后端的计算机(与 wget 等一起使用)但它仍然无法工作。

我是否遗漏了一些明显的东西,或者问题是什么?提前谢谢

最佳答案

听起来您的问题是由于跨源请求共享 (CORS) 限制造成的。您可以使用wai-cors设置您的 CORS 策略。

示例:

import Web.Scotty
import Network.Wai.Middleware.Cors

main = scotty 3000 $ do
middleware simpleCors
get "/get" $ json ("hello world" :: String)

关于Haskell Scotty 和 Elm Http NetworkError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50706306/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com