jmi*_*ite 8 ajax json haskell yesod elm
我正在尝试从客户端到服务器进行基本的JSON通信,使用以下Elm代码:
import open Http
result res = case res of
Success a -> a
Waiting -> "Waiting"
Failure n a-> "Failure " ++ (show n) ++ " " ++ (show a)
main = lift asText <| lift (show . result) <| send <| constant <| post "http://localhost:3000" "{foo : true}"
Run Code Online (Sandbox Code Playgroud)
服务器完全如Yesod书的这一部分所示.
但是,当我运行请求时,我得到了输出
"\"Failure 0 []\""
Run Code Online (Sandbox Code Playgroud)
有没有人知道我要做些什么来让Elm客户端与Yesod服务器正常通信?我尝试过一个Python客户端,请求工作得很好.同样,在Yesod网站上有几个成功的Http请求的例子,所以我相信两个库都正常工作,但我使用它们是错误的.
更新:问题是客户端.我能够使用Chrome并禁用安全选项,并且不对Yesod进行任何更改.我会寻找一种解决方法,但这至少足以让我的开发继续下去.
这是由某些站点上的跨站点脚本安全功能引起的.它最近出现在榆树邮件列表上(由我).如果您致力于使用特定服务器,目前还没有解决方法,尽管我很幸运托管了这些文件elm-server,这些文件托管了您运行它的目录中的所有文件.
您应该检查javascript控制台,你会看到类似的东西XMLHttpRequest cannot load http://www.google.com/. Origin http://localhost:8000 is not allowed by Access-Control-Allow-Origin..如果你不这样做,那么这是一个全新的问题.但我对此表示怀疑.
我想你的服务器需要发送CORS-header,在这篇SO帖子的例子中讨论:在Yesod中允许跨源请求
有关MDN和Wikipedia中 CORS的更多信息
请注意,如果浏览器认为您正在进行跨源请求
| 归档时间: |
|
| 查看次数: |
2336 次 |
| 最近记录: |