Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Http只能获取httpbin.org_Http_Task_Elm - Fatal编程技术网

Http只能获取httpbin.org

Http只能获取httpbin.org,http,task,elm,Http,Task,Elm,当在elm reactor中运行以下程序时(或使用elm make),我发现它实际上GETs的唯一网页是。否则,我会看到Http.NetworkError,即使在诸如“”或“”之类的可靠站点上也是如此。我完全不明白为什么会这样,有人能指出我的错误吗 module Main (..) where import Http import Html exposing (..) import Effects import Html.Events as Events import StartApp imp

当在
elm reactor
中运行以下程序时(或使用
elm make
),我发现它实际上
GET
s的唯一网页是。否则,我会看到Http.NetworkError,即使在诸如“”或“”之类的可靠站点上也是如此。我完全不明白为什么会这样,有人能指出我的错误吗

module Main (..) where

import Http
import Html exposing (..)
import Effects
import Html.Events as Events
import StartApp
import Task


-- MODEL


type alias Model =
  { output : String }


type Action
  = Response String
  | Request String
  | HTTPError Http.Error



-- UPDATE


update : Action -> Model -> ( Model, Effects.Effects Action )
update act mod =
  case act of
    Response str ->
      ( { mod | output = str }, Effects.none )

    Request srv ->
      let
        effects =
          srv
            |> Http.getString
            |> Task.map Response
            |> flip Task.onError (Task.succeed << HTTPError)
            |> Effects.task
      in
        ( { mod | output = "GET: " ++ srv }, effects )

    HTTPError err ->
      ( { mod
          | output =
              "Error: "
                ++ case err of
                    Http.Timeout ->
                      "Timeout"

                    Http.UnexpectedPayload str ->
                      "Unexpected payload: " ++ str

                    Http.BadResponse code str ->
                      "Bad response: " ++ toString code ++ ": " ++ str

                    Http.NetworkError ->
                      "Network error"
        }
      , Effects.none
      )



-- VIEW


view : Signal.Address Action -> Model -> Html.Html
view address mod =
  div
    []
    [ div
        []
        [ input
            [ Events.on "input" Events.targetValue (Request >> Signal.message address) ]
            []
        ]
    , div [] [ text mod.output ]
    ]



-- MAIN


app : StartApp.App Model
app =
  StartApp.start
    { init = ( { output = "No requests made" }, Effects.none )
    , update = update
    , view = view
    , inputs = []
    }


main =
  app.html


port tasks : Signal (Task.Task Effects.Never ())
port tasks =
  app.tasks
主模块(..)其中
导入Http
导入Html公开(…)
进口效应
将Html.Events导入为事件
进口StartApp
导入任务
--模型
类型别名模型=
{输出:字符串}
类型动作
=响应字符串
|请求字符串
|HTTPError Http.Error
--更新
更新:动作->模型->(模型,效果,效果动作)
更新act mod=
案例行为
响应str->
({mod|output=str},Effects.none)
请求srv->
让
影响=
srv
|>Http.getString
|>Task.map响应
|>翻转Task.onError(Task.succeed Effects.Task
在里面
({mod|output=“GET:++srv},效果)
HTTPError错误->
({mod
|输出=
“错误:”
++案例错误
Http.Timeout->
“超时”
Http.UnexpectedPayload str->
“意外负载:”++str
Http.bad响应代码str->
错误响应:“++toString代码++”:“++str”
Http.NetworkError->
“网络错误”
}
,无影响
)
--看法
视图:Signal.Address操作->模型->Html.Html
查看地址模块=
div
[]
[div
[]
[输入
[Events.on“input”Events.targetValue(请求>>信号.message地址)]
[]
]
,div[][text mod.output]
]
--主要
应用程序:StartApp.app模型
应用程序=
开始
{init=({output=“无请求”},Effects.none)
,update=update
,视图=视图
,输入=[]
}
主要=
app.html
端口任务:信号(Task.Task Effects.Never())
港口任务=
应用程序任务

您很可能遇到跨源浏览器限制。在发出失败请求时,请查看浏览器javascript控制台。Chrome会记录如下错误:

无法加载XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此不允许访问源“”

您的工作httpbin示例链接包括HTTP头
访问控制允许来源:
,这是限制最少的设置

通过查找(代表跨源Http请求)上的信息,您可以了解更多关于这些类型的问题以及解决这些问题的方法