Http只能获得httpbin.org

Lan*_*ton 3 http task elm

当运行以下程序elm-reactor(或使用elm-make该问题)时,我发现它实际上是唯一的网页GEThttpbin.否则,我会看到Http.NetworkError,即使在可靠的网站上,例如" http://google.com "或" http://stackoverflow.com ".关于为什么会这样,我完全糊涂了,有人能指出我的错误吗?

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
Run Code Online (Sandbox Code Playgroud)

Cha*_*ert 6

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

XMLHttpRequest无法加载https://www.stackoverflow.com/.请求的资源上不存在"Access-Control-Allow-Origin"标头.因此,不允许来源" http://elm-lang.org "访问.

您的httpbin示例链接包含HTTP标头Access-Control-Allow-Origin: *,这是限制性最小的设置.

通过查找有关CORS(代表Cross Origin Http Request)的信息,您可以阅读有关这些类型的问题以及解决这些问题的方法.