HTTP POST如何在Polymer中工作?

时间:2015-11-02 11:21:58

标签: http post polymer put

我想知道POST调用在Polymer中是如何工作的。我知道我必须使用POST调用来发送敏感信息,例如用户密码和访问令牌。我试过这样做:

<iron-ajax
        id="AjaxPost"
        url="/api/login"
        method="POST"
        content-type="application/x-www-form-urlencoded"
        handle-as="json"
        on-response="_handleAjaxPostResponse"
        on-error="_handleAjaxPostError"
        ></iron-ajax>


this.$.AjaxPost.params = { email: "abc@gmail.com", password: "password" };
this.$.AjaxPost.generateRequest();

但是,这将在URL中设置参数,可以在浏览器控制台中查看,如:

POST http://localhost:8080/api/login?email=abc%40mgail.com&password=password 400 (Bad Request)

PUT方法允许您设置正文中的数据,我认为这更安全。现在我有两个问题:

  1. 我们也可以设置POST方法的主体吗?或设置参数与设置体相同?
  2. 如果可以,我该如何在服务器端提取数据?
  3. PS:我们没有使用SSL HTTPS连接。话虽如此,可以采用哪种方法以提高安全性?

1 个答案:

答案 0 :(得分:5)

iron-ajax的api文档定义了body属性如下:

  


  对象默认值:
  随请求一起发送的正文内容,通常与“POST”请求一起使用   如果body是一个字符串,它将被不加修改地发送   如果Content-Type设置为下面列出的值,那么将对主体进行相应编码。

content-type="application/json"
    body is encoded like {"foo":"bar baz","x":1}
content-type="application/x-www-form-urlencoded"
    body is encoded like foo=bar+baz&x=1
  

否则主体将被未经修改地传递给浏览器,它将处理任何编码(例如FormData,Blob,ArrayBuffer)。

要将数据作为正文发送,您应该修改您的请求,如下所示

<iron-ajax
        id="AjaxPost"
        url="/api/login"
        method="POST"
        content-type="application/json"
        handle-as="json"
        on-response="_handleAjaxPostResponse"
        on-error="_handleAjaxPostError"
        ></iron-ajax>


this.$.AjaxPost.body = { "email": "abc@gmail.com", "password": "password" };
this.$.AjaxPost.generateRequest();