簡體   English   中英

HTTP POST如何在Polymer中工作?

[英]How does HTTP POST work in Polymer?

我想知道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. 如果可以,我應該如何在服務器端提取數據?

PS:我們沒有使用SSL HTTPS連接。 話雖如此,可以合並哪種方法以提高安全性?

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM