首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Haskell和Elm Http NetworkError

Haskell和Elm Http NetworkError
EN

Stack Overflow用户
提问于 2018-06-05 18:01:37
回答 1查看 575关注 0票数 6

我想研究一下网络开发的后端haskell和前端的elm。所以我写了两个简单的"hello world“代码片段

埃尔姆:

代码语言:javascript
复制
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)

哈斯克尔/斯科蒂:

代码语言:javascript
复制
import Web.Scotty

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

这两种方法都能很好地独立工作--这意味着elm代码可以从httpbin等服务器获得数据,scotty服务器可以处理我用浏览器发送的请求或wget/curl等工具,但是当我试图将两者结合使用时,elm中的http.send调用将返回一个网络错误。

我怀疑这可能是一个问题,两台服务器都托管在同一台计算机上(不知道原因,但我希望消除这种可能性),因此我在另一台计算机上托管了客户端站点,我知道它与承载spock后端的计算机有工作连接(与wget等一起工作),但它仍然无法工作。

我是不是遗漏了一些显而易见的东西,还是有什么问题?thx预先

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-05 18:09:33

听起来你的问题是由于跨源请求共享(CORS)的限制。您可以使用围哥来设置CORS策略。

示例:

代码语言:javascript
复制
import Web.Scotty
import Network.Wai.Middleware.Cors

main = scotty 3000 $ do
    middleware simpleCors
    get "/get" $ json ("hello world" :: String)
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50706306

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档