我們正在創建一個允許用戶上傳大文件的表單。在移動設備和慢速連接上,可能需要一段時間才能上傳,因此,通過AJAX調用來處理這一點似乎很重要,該調用會向用戶顯示進度條(或讓他們知道它仍在工作的內容)。帶有祕密查詢變量的AJAX文件上傳
下面是問題:上傳的端點是第三方API,它需要我們的祕密API密鑰作爲參數之一。這是直接鏈接到the section in their documentation的鏈接。這個API密鑰不能被暴露給客戶端的用戶。
我的第一本能是將表單提交給我們網站上的中間PHP腳本,它具有API密鑰,然後將文件上傳到API。但我很確定這意味着將文件上傳兩次:一次到我們的服務器。然後再從我們的服務器到API端點。即使表單是使用AJAX提交的,對於用戶來說完成等待的時間長兩倍也不是一個好的結果。
因此:什麼是讓用戶上傳文件同時保持我們的API密鑰安全的最平滑的方式?
一些細節可能並不重要:
我們的網站是基於CakePHP框架(v2.x)構建的PHP web應用程序。上傳的文件是1到5分鐘長的所有不同格式的視頻文件。該API是一家名爲Wistia的公司(請參閱上述文檔的鏈接)。文件大小似乎從3-30MB。我們無法改變第三方API的工作方式。
你如何將參數傳遞給API?通過PHP?通過Javascript作爲一個URL中的參數?我不清楚爲什麼它應該公開,而不是隱藏在PHP端。 – Alvaro
Ajax請求將直接發送給第三方? – Pieter
@Alvaro我在他們的文檔中添加了授權選項的鏈接。 – emersonthis