Polymer中的HTTP POST是如何工作的?

3

我希望了解Polymer中POST调用如何工作。 我知道必须使用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. 如果可能的话,应该如何在服务器端提取数据?

PS:我们没有使用SSL HTTPS连接。 话虽如此,哪种方法可以用于更好的安全性?

1个回答

6
iron-ajax的API文档定义了如下的body属性:
body
对象 默认值:
包含请求体内容的对象,通常用于“POST”请求。
如果body是一个字符串,则会原封不动地发送。
如果Content-Type设置为以下某个值,则将相应地对body进行编码。
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();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接