我是 API 和 json 的新手,所以這可能是基本的。但是通過谷歌搜索找不到解決方案。
我想通過 API 更改電子商店訂單狀態,方法是單擊電子郵件中的超鏈接。我激活了一個 API,并通過以下命令設法通過 Postman 更改訂單狀態:
PUT {url}/api/v2/orders HTTP/1.1
Content-Type: application/json
Authorization: Basic {abcdefgh}
{
"orders": [
{
"order_number": "00001",
"status_id": "16",
}
]
}
有沒有辦法通過簡單地單擊超鏈接來運行此命令?由于授權是硬編碼的,我應該擔心安全性嗎?
干杯!
uj5u.com熱心網友回復:
出于安全原因,電子郵件客戶端不支持執行腳本或除 GET 請求之外的任何其他內容。因為這需要使用 javascript/jquery 來構建有效負載并使用所述有效負載呼叫 API。
您需要將客戶帶到一個安全頁面以登錄并管理他們的訂單。
超鏈接可能會將他們帶到登錄頁面或注冊頁面。
令牌授權可能與電子郵件一起使用,作為將用戶帶到頁面以查看其訂單的驗證。但同樣,您無法確定是否有授權人員打開了電子郵件。
關于硬編碼任何型別的授權,這是一個很大的問題。
uj5u.com熱心網友回復:
由于單擊電子郵件中的超鏈接與在瀏覽器欄中輸入地址相同,因此您無法通過它發出 POST 請求。做你想做的事情的一種方法是生成一個一次性使用的令牌,然后簡單地將它放在 url 中。當用戶單擊 kyperlink 時,對服務器的 GET 請求將包含令牌,可用于驗證。
uj5u.com熱心網友回復:
有沒有辦法通過簡單地單擊超鏈接來運行此命令?
不是一般的,沒有。單擊電子郵件中的鏈接會發出一個GET請求,該請求不能包含正文。也就是說:您的"orders"JSON 將不包括在內。它也不會知道包含Authorization標題。
據我所知,沒有常見的電子郵件客戶端允許您發出PUT或POST請求。
那么:您可以在 URL 中對請求進行編碼,并使用GET請求來代替嗎?絕對可以。不要這樣做。
有幾個原因。最重要的是你提到的那個:
由于授權是硬編碼的,我應該擔心安全性嗎?
硬編碼授權通常是個壞主意,尤其是在電子郵件中:(1)您不能保證電子郵件是加密的,這會將憑據暴露給任何可以捕獲訊息的人;(2) 如果您將電子郵件轉發給我,我現在擁有您的憑據。
此外,如果您在 URL 中包含授權,則該授權現在位于用戶的瀏覽器歷史記錄中,并且如果他們與任何人共享鏈接(“嘿,看看這個回形針上的交易!”...),那么:與上面相同。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/471499.html
