使用聚合物核心ajax向golang服务器发布请求?

我正在尝试使用聚合物核心 ajax 向服务器 runnung golang 发出 POST 请求。经过大量搜索(因为我是这个东西的新手),我最终得到了以下代码。此外,GET 请求工作正常。POST 参数我不明白如何使用 core-ajax 传递。


<polymer-element name="register-user" attributes="url">

    <template>

        <core-ajax id="ajaxSubmit" url="{{url}}" contentType="application/json" handleAs="json" method="post" on-core-response="{{response}}"></core-ajax>

        <style type="text/css">

        </style>

    </template>

    <script>

    Polymer({

        buttonListener: function() {

            var data = '{"Name":"'+ this.name +'", "Email":"'+ this.email +'"}';

            this.$.ajaxSubmit.data = data;

            this.$.ajaxSubmit.go();

            console.log(data);

        },

        response: function(oldValue){

            console.log(this.response);

        }

    });

    </script>

</polymer-element>

500 (Internal Server Error)但是,当我使用 curl 发出 POST 请求时,上面的代码会返回,即


curl -i -H 'Content-Type: application/json' -d '{"Name":"Batman",    

     "Email":"batman@gmail.com"}' http://so.me.ip.ad:8080/register

它可以正常工作并返回


HTTP/1.1 200 OK

Content-Type: application/json

X-Powered-By: go-json-rest

Date: Wed, 29 Apr 2015 05:40:15 GMT

Content-Length: 117


{

  "id": 3,

  "name": "Batman",

  "email": "batman@gmail.com",

  "createdAt": "2015-04-29T05:40:15.073491143Z"

}

另外,我在服务器上设置了一个 CORS 中间件,即


api.Use(&rest.CorsMiddleware{

    RejectNonCorsRequests: false,

    OriginValidator: func(origin string, request *rest.Request) bool {

        return origin == "http://0.0.0.0:8000"

    },

    AllowedMethods: []string{"GET", "POST", "PUT"},

    AllowedHeaders: []string{

        "Accept", "Content-Type", "X-Custom-Header", "Origin"},

    AccessControlAllowCredentials: true,

    AccessControlMaxAge:           3600,

})

我究竟做错了什么?任何反馈都会有很大帮助!谢谢^.^


繁花不似锦
浏览 141回答 1
1回答

GCT1015

我认为 CORS 是一条红鲱鱼。问题可能是您发送的是表单编码的数据而不是 json。我从一个有类似问题的用户那里发现了一个错误。HTTP/1.1 500 Internal Server ErrorContent-Type: application/jsonX-Powered-By: go-json-restDate: Fri, 12 Dec 2014 04:29:59 GMTContent-Length: 71{&nbsp; "Error": "invalid character '\\'' looking for beginning of value"}也许你应该使用.body而不是.data? 看到这个答案。从聚合物文件:body: 可选的原始正文内容,当 method === "POST" 时发送。例子:<core-ajax method="POST" auto url="http://somesite.com"&nbsp; &nbsp; body='{"foo":1, "bar":2}'></core-ajax>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go