我想知道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方法允许您设置正文中的数据,我认为这更安全。现在我有两个问题:
PS:我们没有使用SSL HTTPS连接。话虽如此,可以采用哪种方法以提高安全性?
答案 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();