$lang['tuto'] = "ਟਿ utorial ਟੋਰਿਅਲਸ"; ?> JavaScript ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਅਤੇ

JavaScript ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਅਤੇ ਕਲਾਉਡਾਈਨਰੀ 'ਤੇ ਤਸਵੀਰਾਂ ਅਪਲੋਡ ਕਰਨ ਵੇਲੇ "ਅਵੈਧ ਦਸਤਖਤ" ਗਲਤੀ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਜਾਓ

Temp mail SuperHeros
JavaScript ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਅਤੇ ਕਲਾਉਡਾਈਨਰੀ 'ਤੇ ਤਸਵੀਰਾਂ ਅਪਲੋਡ ਕਰਨ ਵੇਲੇ ਅਵੈਧ ਦਸਤਖਤ ਗਲਤੀ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਜਾਓ
JavaScript ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਅਤੇ ਕਲਾਉਡਾਈਨਰੀ 'ਤੇ ਤਸਵੀਰਾਂ ਅਪਲੋਡ ਕਰਨ ਵੇਲੇ ਅਵੈਧ ਦਸਤਖਤ ਗਲਤੀ ਨੂੰ ਠੀਕ ਕਰਨ ਲਈ ਜਾਓ

ਕਲਾਉਡਨਰੀ ਦਸਤਖਤਾਂ ਵਿੱਚ ਮੁਹਾਰਤ ਹਾਸਲ ਕਰਨਾ: ਅਵੈਧ ਦਸਤਖਤਾਂ ਦੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਡੀਬੱਗ ਕਰਨਾ

ਫ੍ਰੰਟਐਂਡ ਤੋਂ ਕਲਾਉਡਾਈਨਰੀ 'ਤੇ ਚਿੱਤਰਾਂ ਨੂੰ ਸਿੱਧੇ ਅਪਲੋਡ ਕਰਨਾ ਵੈੱਬ ਐਪਲੀਕੇਸ਼ਨਾਂ ਨੂੰ ਮਹੱਤਵਪੂਰਨ ਤੌਰ 'ਤੇ ਸੁਚਾਰੂ ਬਣਾ ਸਕਦਾ ਹੈ, ਪਰ ਸੁਰੱਖਿਅਤ API ਬੇਨਤੀਆਂ ਨੂੰ ਸਥਾਪਤ ਕਰਨਾ ਅਕਸਰ ਵਿਲੱਖਣ ਚੁਣੌਤੀਆਂ ਪੇਸ਼ ਕਰਦਾ ਹੈ। ਹਾਲ ਹੀ ਵਿੱਚ, ਵਿੱਚ ਦਸਤਖਤ-ਅਧਾਰਿਤ ਪਹੁੰਚ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਮੈਨੂੰ ਇੱਕ ਸਮੱਸਿਆ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪਿਆ JavaScript ਅਤੇ ਜਾਓ, ਜਿੱਥੇ Cloudinary ਇੱਕ "ਅਵੈਧ ਦਸਤਖਤ" ਗਲਤੀ ਵਾਪਸ ਕਰਦਾ ਰਿਹਾ। 😫

ਇਹ ਗਲਤੀ Cloudinary's API ਨਾਲ ਕੰਮ ਕਰਨ ਵਾਲੇ ਡਿਵੈਲਪਰਾਂ ਲਈ ਆਮ ਹੈ ਜਦੋਂ ਇੱਕ ਸੁਰੱਖਿਅਤ ਹੈਸ਼ ਬਣਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰ ਰਹੇ ਹਨ ਜੋ Cloudinary ਦੇ ਸੰਭਾਵਿਤ ਦਸਤਖਤ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ। ਇਹ ਸਮਝਣਾ ਕਿ ਦਸਤਖਤਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਕਿਵੇਂ ਤਿਆਰ ਕਰਨਾ ਅਤੇ ਮੇਲ ਕਰਨਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਸੁਰੱਖਿਆ ਲੋੜਾਂ ਦੇ ਨਾਲ, ਔਖਾ ਹੋ ਸਕਦਾ ਹੈ, ਖਾਸ ਕਰਕੇ ਜੇਕਰ ਤੁਸੀਂ ਹੈਸ਼ਿੰਗ ਤਕਨੀਕਾਂ ਤੋਂ ਅਣਜਾਣ ਹੋ।

ਇਸ ਲੇਖ ਵਿੱਚ, ਮੈਂ ਤੁਹਾਨੂੰ ਇਸ ਖਾਸ ਹਸਤਾਖਰ ਗਲਤੀ ਨੂੰ ਡੀਬੱਗ ਕਰਨ ਦੀ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਮਾਰਗਦਰਸ਼ਨ ਕਰਾਂਗਾ, ਜਿਸ ਵਿੱਚ ਫਰੰਟਐਂਡ ਦੋਵਾਂ ਨੂੰ ਕਵਰ ਕੀਤਾ ਜਾਵੇਗਾ JavaScript ਅਤੇ ਬੈਕਐਂਡ ਵਿੱਚ ਜਾਓ. ਮੈਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਲੋੜੀਂਦੇ ਮੁੱਖ ਕਦਮਾਂ ਦੀ ਵਿਆਖਿਆ ਕਰਾਂਗਾ ਕਿ ਤੁਹਾਡੀ ਦਸਤਖਤ ਜਨਰੇਸ਼ਨ Cloudinary ਦੀਆਂ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਨਾਲ ਇਕਸਾਰ ਹੈ।

ਉਦਾਹਰਣਾਂ ਅਤੇ ਆਮ ਸਮੱਸਿਆਵਾਂ ਦੇ ਨਾਲ, ਅਸੀਂ ਇੱਕ ਕਾਰਜਸ਼ੀਲ ਚਿੱਤਰ ਅੱਪਲੋਡ ਹੱਲ ਬਣਾਉਣ ਲਈ ਕੰਮ ਕਰਾਂਗੇ। ਆਉ ਅੰਦਰ ਡੁਬਕੀ ਮਾਰੀਏ ਅਤੇ ਨਿਰਵਿਘਨ ਚਿੱਤਰ ਅੱਪਲੋਡਾਂ ਲਈ ਉਹਨਾਂ ਦਸਤਖਤਾਂ ਦੀ ਪੁਸ਼ਟੀ ਕਰੀਏ! 🚀

ਹੁਕਮ ਵਰਤੋਂ ਅਤੇ ਵਰਣਨ ਦੀ ਉਦਾਹਰਨ
hmac.New(sha1.New, []byte(secret)) ਹੈਸ਼ਿੰਗ ਐਲਗੋਰਿਦਮ ਵਜੋਂ SHA-1 ਦੇ ਨਾਲ ਇੱਕ ਨਵਾਂ HMAC (ਹੈਸ਼-ਅਧਾਰਿਤ ਸੁਨੇਹਾ ਪ੍ਰਮਾਣੀਕਰਨ ਕੋਡ) ਬਣਾਉਂਦਾ ਹੈ ਅਤੇ ਗੁਪਤ ਨੂੰ ਕੁੰਜੀ ਵਜੋਂ ਵਰਤਦਾ ਹੈ। ਇਹ Cloudinary ਦੁਆਰਾ ਲੋੜੀਂਦੇ ਸੁਰੱਖਿਅਤ ਦਸਤਖਤਾਂ ਨੂੰ ਬਣਾਉਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਹਸਤਾਖਰ ਕੀਤੇ ਜਾ ਰਹੇ ਸਤਰ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਪ੍ਰਮਾਣਿਤ ਕੀਤਾ ਗਿਆ ਹੈ।
mac.Write([]byte(stringToSign)) HMAC ਉਦਾਹਰਨ ਵਿੱਚ ਬਾਈਟ-ਏਨਕੋਡ ਕੀਤੀ ਸਟ੍ਰਿੰਗ ਸਟ੍ਰਿੰਗ ਨੂੰ ਲਿਖਦਾ ਹੈ। ਇਹ ਕਦਮ HMAC ਐਲਗੋਰਿਦਮ ਵਿੱਚ ਡੇਟਾ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਦਸਤਖਤ ਨੂੰ ਇਨਪੁਟ ਮੁੱਲਾਂ, ਜਿਵੇਂ ਕਿ ਟਾਈਮਸਟੈਂਪ ਅਤੇ ਹੋਰ ਮਾਪਦੰਡਾਂ ਦੇ ਅਧਾਰ ਤੇ ਗਣਨਾ ਕਰਨ ਦੀ ਆਗਿਆ ਮਿਲਦੀ ਹੈ।
hex.EncodeToString(mac.Sum(nil)) HMAC ਡਾਈਜੈਸਟ (ਕੰਪਿਊਟਿਡ ਹੈਸ਼) ਦੇ ਨਤੀਜੇ ਨੂੰ ਹੈਕਸਾਡੈਸੀਮਲ ਸਤਰ ਵਿੱਚ ਏਨਕੋਡ ਕਰਦਾ ਹੈ, ਜੋ ਕਿ ਅੰਤਮ ਦਸਤਖਤ ਹੈ। ਇਹ ਫਾਰਮੈਟ Cloudinary ਦੁਆਰਾ ਲੋੜੀਂਦਾ ਹੈ, ਕਿਉਂਕਿ ਇਹ ਦਸਤਖਤ ਦੀ ਇੱਕ ਅਨੁਮਾਨਯੋਗ ਅਤੇ URL-ਸੁਰੱਖਿਅਤ ਪ੍ਰਤੀਨਿਧਤਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ।
sort.Strings(keys) stringToSign ਵਿੱਚ ਇਕਸਾਰ ਕ੍ਰਮ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਮੈਪ ਕੁੰਜੀਆਂ ਨੂੰ ਵਰਣਮਾਲਾ ਅਨੁਸਾਰ ਕ੍ਰਮਬੱਧ ਕਰਦਾ ਹੈ। Cloudinary ਉਮੀਦ ਕਰਦਾ ਹੈ ਕਿ ਦਸਤਖਤ ਬਣਾਉਣ ਵੇਲੇ ਪੈਰਾਮੀਟਰ ਵਰਣਮਾਲਾ ਦੇ ਕ੍ਰਮ ਵਿੱਚ ਹੋਣ, ਇਸਲਈ ਇਹ ਕਮਾਂਡ ਸਹੀ ਕ੍ਰਮ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ।
strconv.FormatInt(time.Now().Unix(), 10) ਮੌਜੂਦਾ ਯੂਨਿਕਸ ਟਾਈਮਸਟੈਂਪ (ਸਕਿੰਟਾਂ ਵਿੱਚ) ਨੂੰ ਇੱਕ ਸਤਰ ਵਿੱਚ ਬਦਲਦਾ ਹੈ। ਇਹ ਟਾਈਮਸਟੈਂਪ ਦਸਤਖਤ ਬਣਾਉਣ ਲਈ ਇੱਕ ਮਾਪਦੰਡ ਵਜੋਂ ਕੰਮ ਕਰਦਾ ਹੈ ਅਤੇ ਇੱਕ ਨਿਸ਼ਚਿਤ ਸਮਾਂ ਸੀਮਾ ਦੇ ਅੰਦਰ ਬੇਨਤੀ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ, ਸੁਰੱਖਿਆ ਨੂੰ ਵਧਾਉਂਦਾ ਹੈ।
new FormData() JavaScript ਵਿੱਚ ਇੱਕ ਨਵਾਂ ਫਾਰਮਡਾਟਾ ਆਬਜੈਕਟ ਬਣਾਉਂਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਮੁੱਖ-ਮੁੱਲ ਜੋੜਿਆਂ ਦੇ ਸਟੋਰੇਜ ਅਤੇ ਟ੍ਰਾਂਸਫਰ ਦੀ ਇਜਾਜ਼ਤ ਮਿਲਦੀ ਹੈ, ਜੋ ਕਿ Cloudinary ਦੇ ਅੱਪਲੋਡ API ਨੂੰ ਮਲਟੀਪਾਰਟ ਫਾਰਮ ਡੇਟਾ (ਜਿਵੇਂ ਕਿ ਫ਼ਾਈਲਾਂ) ਭੇਜਣ ਲਈ ਆਦਰਸ਼ ਹੈ।
axios.post() ਪ੍ਰਦਾਨ ਕੀਤੇ ਡੇਟਾ ਦੇ ਨਾਲ ਇੱਕ HTTP POST ਬੇਨਤੀ ਕਰਦਾ ਹੈ, ਜਿਸ ਵਿੱਚ ਫਾਈਲ, ਦਸਤਖਤ ਅਤੇ ਟਾਈਮਸਟੈਂਪ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ। ਇਹ ਬੇਨਤੀ ਬੇਨਤੀ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਦਸਤਖਤ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ, Cloudinary 'ਤੇ ਫਾਈਲ ਅਤੇ ਮੈਟਾਡੇਟਾ ਅੱਪਲੋਡ ਕਰਦੀ ਹੈ।
http.HandleFunc("/generate-signature", handler) Go ਵਿੱਚ ਇੱਕ ਰੂਟ ਹੈਂਡਲਰ ਨੂੰ ਰਜਿਸਟਰ ਕਰਦਾ ਹੈ, URL ਮਾਰਗ/generate-signature ਨੂੰ getSignatureHandler ਫੰਕਸ਼ਨ ਨਾਲ ਬਾਈਡਿੰਗ ਕਰਦਾ ਹੈ। ਇਹ ਰੂਟ ਫਰੰਟਐਂਡ ਨੂੰ ਹਰੇਕ ਅਪਲੋਡ ਬੇਨਤੀ ਲਈ ਇੱਕ ਵੈਧ ਦਸਤਖਤ ਅਤੇ ਟਾਈਮਸਟੈਂਪ ਪ੍ਰਾਪਤ ਕਰਨ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।
http.Error(w, "message", statusCode) ਇੱਕ ਕਸਟਮ ਸੁਨੇਹਾ ਅਤੇ HTTP ਸਥਿਤੀ ਕੋਡ ਦੇ ਨਾਲ ਇੱਕ ਗਲਤੀ ਜਵਾਬ ਭੇਜਦਾ ਹੈ. ਇੱਥੇ, ਇਸਦੀ ਵਰਤੋਂ ਜਵਾਬ ਭੇਜਣ ਲਈ ਕੀਤੀ ਜਾਂਦੀ ਹੈ ਜੇਕਰ ਦਸਤਖਤ ਬਣਾਉਣਾ ਅਸਫਲ ਹੋ ਜਾਂਦਾ ਹੈ, ਕਲਾਇੰਟ ਨੂੰ ਅਪਲੋਡ ਪ੍ਰਕਿਰਿਆ ਦੌਰਾਨ ਗਲਤੀਆਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਸੰਭਾਲਣ ਵਿੱਚ ਮਦਦ ਕਰਦਾ ਹੈ।
fmt.Fprintf(w, "{\\"signature\\":...}") ਤਿਆਰ ਕੀਤੇ ਦਸਤਖਤ ਅਤੇ ਟਾਈਮਸਟੈਂਪ ਨੂੰ ਏਮਬੈਡ ਕਰਦੇ ਹੋਏ, ਕਲਾਇੰਟ ਨੂੰ ਇੱਕ JSON ਜਵਾਬ ਫਾਰਮੈਟ ਕਰਦਾ ਹੈ ਅਤੇ ਲਿਖਦਾ ਹੈ। ਇਹ ਜਵਾਬ ਫਰੰਟਐਂਡ ਨੂੰ ਕਲਾਉਡਾਈਨਰੀ ਅਪਲੋਡ ਬੇਨਤੀ ਲਈ ਇਹਨਾਂ ਮੁੱਲਾਂ ਨੂੰ ਐਕਸੈਸ ਕਰਨ ਅਤੇ ਵਰਤਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।

ਜਾਵਾ ਸਕ੍ਰਿਪਟ ਅਤੇ ਗੋ ਨਾਲ ਕਲਾਉਡਨਰੀ ਹਸਤਾਖਰ ਗਲਤੀਆਂ ਨੂੰ ਦੂਰ ਕਰਨਾ

ਇਸ ਹੱਲ ਵਿੱਚ, ਮੁੱਖ ਉਦੇਸ਼ ਹੱਲ ਕਰਨਾ ਹੈ "ਅਵੈਧ ਦਸਤਖਤ" Cloudinary 'ਤੇ ਚਿੱਤਰ ਅੱਪਲੋਡ ਕਰਨ ਵੇਲੇ ਗਲਤੀ। ਇਹ ਤਰੁੱਟੀ ਆਮ ਤੌਰ 'ਤੇ ਉਦੋਂ ਵਾਪਰਦੀ ਹੈ ਜਦੋਂ Cloudinary ਦੁਆਰਾ ਉਮੀਦ ਕੀਤੇ ਦਸਤਖਤ ਅਤੇ ਤੁਹਾਡੇ ਬੈਕਐਂਡ ਦੁਆਰਾ ਤਿਆਰ ਕੀਤੇ ਗਏ ਦਸਤਖਤ ਵਿਚਕਾਰ ਕੋਈ ਮੇਲ ਨਹੀਂ ਖਾਂਦਾ ਹੈ। ਇੱਥੇ, ਸਾਡੀ ਪਹੁੰਚ ਦਸਤਖਤ ਬਣਾਉਣ ਲਈ ਗੋ ਵਿੱਚ ਲਿਖੀ ਇੱਕ ਬੈਕਐਂਡ ਸਕ੍ਰਿਪਟ ਦੀ ਵਰਤੋਂ ਕਰਦੀ ਹੈ, ਜਦੋਂ ਕਿ JavaScript ਵਿੱਚ ਫਰੰਟਐਂਡ Axios ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਫਾਈਲ ਅਪਲੋਡ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਦਾ ਹੈ। ਅਸੀਂ ਇੱਕ ਵਿਲੱਖਣ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਦਸਤਖਤ ਤਿਆਰ ਕਰਦੇ ਹਾਂ HMAC ਹੈਸ਼, ਜੋ ਕਿ ਇੱਕ ਗੁਪਤ ਕੁੰਜੀ ਦੇ ਨਾਲ ਟਾਈਮਸਟੈਂਪ ਅਤੇ ਹੋਰ ਮਾਪਦੰਡਾਂ ਨੂੰ ਜੋੜਦਾ ਹੈ (ਇਸ ਕੇਸ ਵਿੱਚ, ਸਿਰਫ਼ ਟਾਈਮਸਟੈਂਪ ਸ਼ੁਰੂ ਵਿੱਚ)। ਇਹ ਦਸਤਖਤ ਫਿਰ Cloudinary ਨੂੰ ਫਾਈਲ ਅਪਲੋਡ ਬੇਨਤੀ ਦੇ ਨਾਲ ਪਾਸ ਕੀਤੇ ਜਾਂਦੇ ਹਨ, ਅਪਲੋਡ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਵਿੱਚ ਮਦਦ ਕਰਦੇ ਹਨ।

ਗੋ ਬੈਕਐਂਡ 'ਤੇ, ਅਸੀਂ ਇੱਕ ਹੈਂਡਲਰ ਫੰਕਸ਼ਨ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਕੇ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ ਜੋ ਤਿਆਰ ਕੀਤੇ ਦਸਤਖਤ ਅਤੇ ਟਾਈਮਸਟੈਂਪ ਨੂੰ ਵਾਪਸ ਕਰਦਾ ਹੈ। ਜਦੋਂ ਫਰੰਟਐਂਡ ਇੱਕ ਦਸਤਖਤ ਦੀ ਬੇਨਤੀ ਕਰਦਾ ਹੈ, ਹੈਂਡਲਰ ਫੰਕਸ਼ਨ ਇੱਕ ਉਪਯੋਗਤਾ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਦਾ ਹੈ ਜਿਸਦਾ ਨਾਮ ਹੈ “generateSignature”, ਜੋ HMAC ਦਸਤਖਤ ਬਣਾਉਂਦਾ ਹੈ। "sort.Strings" ਵਰਗੀਆਂ ਮੁੱਖ ਕਮਾਂਡਾਂ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀਆਂ ਹਨ ਕਿ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਵਰਣਮਾਲਾ ਅਨੁਸਾਰ ਛਾਂਟਿਆ ਗਿਆ ਹੈ, ਕਿਉਂਕਿ Cloudinary ਲਈ ਕ੍ਰਮ ਨੂੰ ਇਕਸਾਰ ਹੋਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇੱਕ ਹੋਰ ਮਹੱਤਵਪੂਰਨ ਹਿੱਸਾ ਟਾਈਮਸਟੈਂਪ ਨੂੰ "strconv.FormatInt" ਦੇ ਨਾਲ ਇੱਕ ਸਟ੍ਰਿੰਗ ਫਾਰਮੈਟ ਵਿੱਚ ਬਦਲ ਰਿਹਾ ਹੈ, ਜੋ ਕਿ ਫਰੰਟਐਂਡ ਨੂੰ ਫਾਰਮ ਡੇਟਾ ਵਿੱਚ ਸਹਿਜੇ ਹੀ ਵਰਤਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ। ਇਸ ਤਰ੍ਹਾਂ, ਭਾਵੇਂ ਅਸੀਂ ਭਵਿੱਖ ਵਿੱਚ ਪੈਰਾਮੀਟਰ ਬਦਲਦੇ ਹਾਂ, ਬੈਕਐਂਡ ਫਰੰਟਐਂਡ ਬੇਨਤੀ ਨੂੰ ਸੋਧੇ ਬਿਨਾਂ ਅੱਪਡੇਟ ਕੀਤੀ ਸੂਚੀ ਨੂੰ ਗਤੀਸ਼ੀਲ ਤੌਰ 'ਤੇ ਸੰਭਾਲ ਸਕਦਾ ਹੈ।

ਫਰੰਟਐਂਡ 'ਤੇ, ਅਸੀਂ ਫਾਈਲ ਅਪਲੋਡ ਸ਼ੁਰੂ ਕਰਨ ਲਈ JavaScript ਅਤੇ Axios ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹਾਂ। ਇੱਥੇ, ਫਰੰਟਐਂਡ ਸਕ੍ਰਿਪਟ ਅਪਲੋਡ ਬੇਨਤੀ ਦੇ ਹਰੇਕ ਹਿੱਸੇ ਨੂੰ ਸਟੋਰ ਕਰਨ ਲਈ ਇੱਕ ਫਾਰਮਡਾਟਾ ਆਬਜੈਕਟ ਬਣਾਉਂਦੀ ਹੈ, ਜਿਸ ਵਿੱਚ API ਕੁੰਜੀ, ਟਾਈਮਸਟੈਂਪ, ਦਸਤਖਤ, ਅਤੇ ਖੁਦ ਫਾਈਲ ਸ਼ਾਮਲ ਹੈ। ਬੈਕਐਂਡ ਹੈਂਡਲਰ ਦੇ ਦਸਤਖਤ ਨਾਲ ਜਵਾਬ ਦੇਣ ਤੋਂ ਬਾਅਦ, Axios Cloudinary ਦੇ ਚਿੱਤਰ ਅੱਪਲੋਡ ਐਂਡਪੁਆਇੰਟ ਨੂੰ ਇੱਕ POST ਬੇਨਤੀ ਭੇਜਦਾ ਹੈ। ਇਹ ਉਹ ਥਾਂ ਹੈ ਜਿੱਥੇ ਸਾਰੇ ਟੁਕੜੇ ਇਕੱਠੇ ਹੁੰਦੇ ਹਨ; ਦਸਤਖਤ ਅਤੇ ਟਾਈਮਸਟੈਂਪ ਬੇਨਤੀ ਦੀ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਤਸਦੀਕ ਕਰਦੇ ਹਨ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੇ ਹੋਏ ਕਿ ਸਿਰਫ ਉਹ ਬੇਨਤੀਆਂ ਸਵੀਕਾਰ ਕੀਤੀਆਂ ਜਾਂਦੀਆਂ ਹਨ ਜੋ ਸੰਭਾਵਿਤ ਦਸਤਖਤਾਂ ਨਾਲ ਮੇਲ ਖਾਂਦੀਆਂ ਹਨ। ਇੱਕ ਸੁਰੱਖਿਅਤ ਸਾਹਮਣੇ ਵਾਲੇ ਦਰਵਾਜ਼ੇ ਦੀ ਕਲਪਨਾ ਕਰੋ—ਜੇਕਰ ਕੋਈ ਵਿਅਕਤੀ ਸਹੀ ਕੁੰਜੀ ਤੋਂ ਬਿਨਾਂ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ, ਤਾਂ ਕਲਾਉਡਾਈਨਰੀ ਉਹਨਾਂ ਨੂੰ ਅੰਦਰ ਨਹੀਂ ਆਉਣ ਦੇਵੇਗੀ!

SHA-1 ਦੇ ਨਾਲ HMAC ਹੈਸ਼ਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਨਾ ਸੁਰੱਖਿਆ ਦੀ ਇੱਕ ਪਰਤ ਜੋੜਦਾ ਹੈ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਗੁਪਤ ਕੁੰਜੀ ਤੋਂ ਬਿਨਾਂ ਦਸਤਖਤਾਂ ਨੂੰ ਦੁਹਰਾਉਣਾ ਲਗਭਗ ਅਸੰਭਵ ਹੈ। ਬੈਕਐਂਡ ਗੋ ਕੋਡ ਇਸ ਹੈਸ਼ ਨੂੰ ਜੋੜੀ ਗਈ ਪੁਸ਼ਟੀਕਰਨ ਲਈ ਗੁਪਤ ਕੁੰਜੀ ਨਾਲ ਜੋੜਦਾ ਹੈ। ਇਹ ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ ਅਣਅਧਿਕਾਰਤ ਅੱਪਲੋਡਾਂ ਨੂੰ ਰੋਕਣ ਲਈ ਲਾਭਦਾਇਕ ਹੈ, ਕਿਉਂਕਿ ਕੋਈ ਵੀ ਵਿਅਕਤੀ ਕੁੰਜੀ ਤੋਂ ਬਿਨਾਂ ਹਸਤਾਖਰ ਦਾ ਅਨੁਮਾਨ ਲਗਾਉਣ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦਾ ਹੈ, ਅਸਫਲ ਹੋ ਜਾਵੇਗਾ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਬੈਕਐਂਡ 'ਤੇ ਯੂਨਿਟ ਟੈਸਟ ਪ੍ਰਮਾਣਿਤ ਕਰਦੇ ਹਨ ਕਿ ਤਿਆਰ ਕੀਤੇ ਦਸਤਖਤ ਸੰਭਾਵਿਤ ਫਾਰਮੈਟ ਅਤੇ ਮੁੱਲ ਨਾਲ ਮੇਲ ਖਾਂਦੇ ਹਨ। ਇਹ ਸੈੱਟਅੱਪ ਉਤਪਾਦਨ ਵਾਤਾਵਰਨ ਲਈ ਮਜ਼ਬੂਤ ​​ਹੈ, ਵੱਖ-ਵੱਖ ਕਲਾਇੰਟ ਬੇਨਤੀਆਂ ਵਿੱਚ ਸੁਰੱਖਿਆ ਅਤੇ ਸਥਿਰਤਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ, ਭਾਵੇਂ ਵੈੱਬ ਐਪ ਜਾਂ ਮੋਬਾਈਲ ਕਲਾਇੰਟ ਤੋਂ ਅੱਪਲੋਡ ਕਰਨਾ ਹੋਵੇ। ਇਸ ਨੂੰ ਲਾਗੂ ਕਰਨ ਨਾਲ ਮੇਰੇ ਡੀਬੱਗਿੰਗ ਦੇ ਘੰਟੇ ਬਚੇ ਹਨ, ਅਤੇ ਇਹ ਜਾਣਨਾ ਕਿ ਹਰ ਇੱਕ ਅੱਪਲੋਡ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਪ੍ਰਮਾਣਿਤ ਕੀਤਾ ਗਿਆ ਹੈ, ਬਹੁਤ ਲਾਭਦਾਇਕ ਮਹਿਸੂਸ ਹੁੰਦਾ ਹੈ! 🚀

Go ਵਿੱਚ ਇੱਕ ਵੈਧ Cloudinary ਦਸਤਖਤ ਤਿਆਰ ਕਰਨਾ

ਇੱਕ Cloudinary ਅਪਲੋਡ ਦਸਤਖਤ ਬਣਾਉਣ ਲਈ ਗੋ ਵਿੱਚ ਲਿਖੀ ਬੈਕਐਂਡ ਸਕ੍ਰਿਪਟ। ਇਹ ਸਕ੍ਰਿਪਟ ਸੁਰੱਖਿਅਤ HMAC ਹੈਸ਼ਿੰਗ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਦਸਤਖਤ ਤਿਆਰ ਕਰਦੀ ਹੈ ਅਤੇ ਇਸਨੂੰ ਟਾਈਮਸਟੈਂਪ ਨਾਲ ਵਾਪਸ ਕਰਦੀ ਹੈ।

package main
import (
    "crypto/hmac"
    "crypto/sha1"
    "encoding/hex"
    "fmt"
    "net/http"
    "sort"
    "strconv"
    "time"
)
func generateSignature(params map[string]string, secret string) (string, error) {
    var keys []string
    for key := range params {
        keys = append(keys, key)
    }
    sort.Strings(keys)
    stringToSign := ""
    for _, key := range keys {
        stringToSign += fmt.Sprintf("%s=%s&", key, params[key])
    }
    stringToSign = stringToSign[:len(stringToSign)-1]
    mac := hmac.New(sha1.New, []byte(secret))
    mac.Write([]byte(stringToSign))
    return hex.EncodeToString(mac.Sum(nil)), nil
}
func getSignatureHandler(w http.ResponseWriter, r *http.Request) {
    timestamp := strconv.FormatInt(time.Now().Unix(), 10)
    params := map[string]string{
        "timestamp": timestamp,
    }
    signature, err := generateSignature(params, "YOUR_CLOUDINARY_SECRET")
    if err != nil {
        http.Error(w, "Failed to generate signature", http.StatusInternalServerError)
        return
    }
    w.Header().Set("Content-Type", "application/json")
    fmt.Fprintf(w, "{\\"signature\\": \\"%s\\", \\"timestamp\\": \\"%s\\"}", signature, timestamp)
}
func main() {
    http.HandleFunc("/generate-signature", getSignatureHandler)
    http.ListenAndServe(":8080", nil)
}

JavaScript ਵਿੱਚ Axios ਨਾਲ ਇੱਕ ਚਿੱਤਰ ਅੱਪਲੋਡ ਕਰਨਾ

Axios ਅਤੇ ਬੈਕਐਂਡ ਤੋਂ ਤਿਆਰ ਕੀਤੇ ਦਸਤਖਤ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਕਲਾਉਡਾਈਨਰੀ ਵਿੱਚ ਇੱਕ ਚਿੱਤਰ ਅੱਪਲੋਡ ਕਰਨ ਲਈ JavaScript ਵਿੱਚ ਲਿਖੀ ਫਰੰਟਐਂਡ ਸਕ੍ਰਿਪਟ।

import axios from 'axios';
async function uploadImage(file) {
    const timestamp = Math.floor(Date.now() / 1000);
    try {
        const { data } = await axios.get('/generate-signature');
        const formData = new FormData();
        formData.append("api_key", process.env.VITE_CLOUDINARY_API_KEY);
        formData.append("file", file);
        formData.append("signature", data.signature);
        formData.append("timestamp", data.timestamp);
        const response = await axios.post(
            `https://api.cloudinary.com/v1_1/${cloudName}/image/upload`,
            formData
        );
        console.log("Image uploaded successfully:", response.data.secure_url);
    } catch (error) {
        console.error("Error uploading image:", error);
    }
}

ਗੋ ਵਿੱਚ ਦਸਤਖਤ ਬਣਾਉਣ ਲਈ ਯੂਨਿਟ ਟੈਸਟ

ਦਸਤਖਤ ਬਣਾਉਣ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਨ ਲਈ ਯੂਨਿਟ ਟੈਸਟ ਸਕ੍ਰਿਪਟ 'ਤੇ ਜਾਓ। ਦਸਤਖਤ ਦੀ ਸ਼ੁੱਧਤਾ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਟੈਸਟਾਂ ਵਿੱਚ ਮਾਪਦੰਡਾਂ ਦੇ ਨਾਲ ਅਤੇ ਬਿਨਾਂ ਕੇਸ ਸ਼ਾਮਲ ਹੁੰਦੇ ਹਨ।

package main
import (
    "testing"
)
func TestGenerateSignature(t *testing.T) {
    params := map[string]string{
        "timestamp": "1730359693",
    }
    expectedSignature := "EXPECTED_SIGNATURE"
    actualSignature, err := generateSignature(params, "YOUR_CLOUDINARY_SECRET")
    if err != nil {
        t.Errorf("Expected no error, got %v", err)
    }
    if actualSignature != expectedSignature {
        t.Errorf("Expected signature %v, got %v", expectedSignature, actualSignature)
    }
}

ਕਲਾਉਡਨਰੀ ਦਸਤਖਤ ਸੁਰੱਖਿਆ ਅਤੇ ਟਾਈਮਸਟੈਂਪ ਵੈਧਤਾ ਦੀ ਪੜਚੋਲ ਕਰਨਾ

Cloudinary ਦੀ ਸੁਰੱਖਿਅਤ ਅਪਲੋਡ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ, ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਤੱਤ ਹੈ ਟਾਈਮਸਟੈਂਪ ਪੈਰਾਮੀਟਰ। ਇਹ ਟਾਈਮਸਟੈਂਪ ਦੋ ਉਦੇਸ਼ਾਂ ਦੀ ਪੂਰਤੀ ਕਰਦਾ ਹੈ: ਇਹ ਇੱਕ ਖਾਸ ਸਮਾਂ ਸੀਮਾ ਦੇ ਅੰਦਰ ਬੇਨਤੀ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰਦਾ ਹੈ ਅਤੇ ਰੀਪਲੇਅ ਹਮਲਿਆਂ ਨੂੰ ਰੋਕਦਾ ਹੈ। ਜਦੋਂ ਕੋਈ ਬੇਨਤੀ ਪ੍ਰਾਪਤ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਕਲਾਉਡਨਰੀ ਜਾਂਚ ਕਰਦਾ ਹੈ ਕਿ ਟਾਈਮਸਟੈਂਪ ਇੱਕ ਨਿਸ਼ਚਿਤ ਸਮਾਂ ਵਿੰਡੋ (ਆਮ ਤੌਰ 'ਤੇ ਕੁਝ ਮਿੰਟ) ਦੇ ਅੰਦਰ ਆਉਂਦਾ ਹੈ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਭਾਵੇਂ ਕਿਸੇ ਨੇ ਤੁਹਾਡੀ API ਕਾਲ ਨੂੰ ਰੋਕਿਆ ਹੋਵੇ, ਉਹ ਬੇਨਤੀ ਦੀ ਮੁੜ ਵਰਤੋਂ ਕਰਨ ਵਿੱਚ ਅਸਮਰੱਥ ਹੋਣਗੇ ਕਿਉਂਕਿ ਟਾਈਮਸਟੈਂਪ ਦੀ ਮਿਆਦ ਜਲਦੀ ਖਤਮ ਹੋ ਜਾਵੇਗੀ। ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਨਾ ਕਿ ਤੁਹਾਡਾ ਬੈਕਐਂਡ ਫਰੰਟਐਂਡ ਦੀ ਸੰਭਾਵਿਤ ਸਮਾਂ ਵਿੰਡੋ ਦੇ ਨੇੜੇ ਇੱਕ ਟਾਈਮਸਟੈਂਪ ਬਣਾਉਂਦਾ ਹੈ ਇੱਕ ਨਿਰਵਿਘਨ ਅਤੇ ਸੁਰੱਖਿਅਤ ਪ੍ਰਕਿਰਿਆ ਲਈ ਜ਼ਰੂਰੀ ਹੈ।

ਇਕ ਹੋਰ ਨਾਜ਼ੁਕ ਵਿਚਾਰ ਹੈਸ਼ਿੰਗ ਅਤੇ ਸਾਈਨ ਕਰਨਾ ਹੈ HMAC-SHA1, ਸੁਨੇਹਾ ਪ੍ਰਮਾਣਿਕਤਾ ਦੀ ਇੱਕ ਵਿਧੀ ਜੋ ਇੱਕ ਹੈਸ਼ਿੰਗ ਫੰਕਸ਼ਨ ਨੂੰ ਇੱਕ ਗੁਪਤ ਕੁੰਜੀ ਨਾਲ ਜੋੜਦੀ ਹੈ। ਕਲਾਉਡਾਈਨਰੀ ਨਾਲ ਇਸ ਪਹੁੰਚ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਸਮੇਂ, ਤੁਹਾਡੀ ਬੈਕਐਂਡ ਸਕ੍ਰਿਪਟ ਨੂੰ ਪੈਰਾਮੀਟਰਾਂ ਦੀ ਇੱਕ ਸਤਰ ਨੂੰ ਇਕੱਠਾ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ, ਉਹਨਾਂ ਨੂੰ ਵਰਣਮਾਲਾ ਅਨੁਸਾਰ ਛਾਂਟਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਉਹਨਾਂ ਨੂੰ ਗੁਪਤ ਕੁੰਜੀ ਨਾਲ ਹੈਸ਼ ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਇਹ ਸਖਤ ਕ੍ਰਮ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਦਸਤਖਤ ਬੇਨਤੀ ਲਈ ਵਿਲੱਖਣ ਹੈ ਅਤੇ ਕਲਾਉਡੀਨਰੀ ਦੀ ਉਮੀਦ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੈ। ਜਿਵੇਂ ਕਿ ਵਾਧੂ ਪੈਰਾਮੀਟਰ ਸ਼ਾਮਲ ਕਰਨਾ folder ਜਾਂ tags ਤੁਹਾਡੇ ਲਈ FormData ਫਰੰਟਐਂਡ 'ਤੇ ਤੁਹਾਡੇ ਅਪਲੋਡ ਨੂੰ ਅਮੀਰ ਬਣਾ ਸਕਦਾ ਹੈ, ਪਰ ਗਲਤੀਆਂ ਤੋਂ ਬਚਣ ਲਈ ਇਹਨਾਂ ਨੂੰ ਬੈਕਐਂਡ ਦਸਤਖਤ ਬਣਾਉਣ ਲਈ ਲੇਖਾ ਦੇਣਾ ਚਾਹੀਦਾ ਹੈ।

ਇੱਕ ਵਾਰ ਜਦੋਂ ਤੁਹਾਡੀ ਦਸਤਖਤ ਤਿਆਰ ਹੋ ਜਾਂਦੀ ਹੈ, ਤਾਂ ਲਾਭ ਇੱਕ ਬੇਨਤੀ ਤੋਂ ਅੱਗੇ ਵਧਦੇ ਹਨ। ਤੁਸੀਂ ਇਹਨਾਂ ਸਿਧਾਂਤਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਅੱਪਲੋਡ ਜਾਂ HMAC-ਅਧਾਰਿਤ ਦਸਤਖਤਾਂ ਦੀ ਲੋੜ ਵਾਲੀਆਂ ਹੋਰ ਸੇਵਾਵਾਂ 'ਤੇ ਲਾਗੂ ਕਰ ਸਕਦੇ ਹੋ। ਇਸ ਤੋਂ ਇਲਾਵਾ, Cloudinary ਦੀਆਂ ਰੀਅਲ-ਟਾਈਮ ਮੀਡੀਆ ਪਰਿਵਰਤਨ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਦੀ ਪੜਚੋਲ ਕਰਨਾ ਆਸਾਨ ਹੋ ਜਾਂਦਾ ਹੈ ਜਦੋਂ ਦਸਤਖਤ ਦੇ ਪੜਾਅ ਦਾ ਹੱਲ ਹੋ ਜਾਂਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਤੁਸੀਂ ਅਪਲੋਡ ਸਮੇਂ 'ਤੇ ਚਿੱਤਰ ਤਬਦੀਲੀਆਂ ਨੂੰ ਸਵੈਚਲਿਤ ਕਰ ਸਕਦੇ ਹੋ। ਇਹਨਾਂ ਕਦਮਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਲਾਗੂ ਕਰਨ ਨਾਲ ਇੱਕ ਲਚਕਦਾਰ, ਉੱਚ-ਸੁਰੱਖਿਆ ਮੀਡੀਆ ਹੈਂਡਲਿੰਗ ਸੈੱਟਅੱਪ ਹੁੰਦਾ ਹੈ ਜੋ ਭਵਿੱਖ ਦੀਆਂ ਲੋੜਾਂ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਂਦਾ ਹੈ! 🔐

Cloudinary ਦਸਤਖਤ ਗਲਤੀਆਂ ਅਤੇ ਸੁਰੱਖਿਅਤ ਅੱਪਲੋਡ ਬਾਰੇ ਆਮ ਸਵਾਲ

  1. Cloudinary ਵਿੱਚ "ਅਵੈਧ ਦਸਤਖਤ" ਗਲਤੀ ਦਾ ਕੀ ਅਰਥ ਹੈ?
  2. ਇਹ ਗਲਤੀ ਆਮ ਤੌਰ 'ਤੇ ਉਦੋਂ ਵਾਪਰਦੀ ਹੈ ਜਦੋਂ ਤੁਹਾਡੇ ਬੈਕਐਂਡ ਤੋਂ ਤਿਆਰ ਦਸਤਖਤ ਕਲਾਉਡਾਈਨਰੀ ਦੇ ਸਰਵਰਾਂ ਤੋਂ ਉਮੀਦ ਕੀਤੇ ਦਸਤਖਤ ਨਾਲ ਮੇਲ ਨਹੀਂ ਖਾਂਦੇ। ਅਕਸਰ, ਇਹ ਗਲਤ ਢੰਗ ਨਾਲ ਆਰਡਰ ਕੀਤੇ ਪੈਰਾਮੀਟਰਾਂ ਜਾਂ ਮੇਲ ਨਾ ਖਾਂਦੇ ਟਾਈਮਸਟੈਂਪ ਮੁੱਲਾਂ ਦੇ ਕਾਰਨ ਹੁੰਦਾ ਹੈ।
  3. ਮੈਂ ਇਹ ਕਿਵੇਂ ਯਕੀਨੀ ਬਣਾਵਾਂ ਕਿ ਟਾਈਮਸਟੈਂਪ ਵੈਧ ਹੈ?
  4. ਵਰਤਦੇ ਹੋਏ ਬੈਕਐਂਡ 'ਤੇ ਸਕਿੰਟਾਂ ਵਿੱਚ ਮੌਜੂਦਾ ਸਮੇਂ ਦੇ ਨੇੜੇ ਇੱਕ ਟਾਈਮਸਟੈਂਪ ਤਿਆਰ ਕਰੋ strconv.FormatInt(time.Now().Unix(), 10) Go ਵਿੱਚ. ਇਹ Cloudinary ਦੇ ਸੰਭਾਵਿਤ ਟਾਈਮਸਟੈਂਪ ਦੇ ਨਾਲ ਸਮੇਂ ਦੇ ਅੰਤਰ ਨੂੰ ਘੱਟ ਕਰਦਾ ਹੈ।
  5. ਮੇਰਾ HMAC-SHA1 ਦਸਤਖਤ ਬਣਾਉਣਾ ਮਹੱਤਵਪੂਰਨ ਕਿਉਂ ਹੈ?
  6. Cloudinary ਅਪਲੋਡਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਕਰਨ ਲਈ HMAC-SHA1 ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਸਿਰਫ਼ ਤੁਹਾਡੇ ਨਾਲ ਹਸਤਾਖਰ ਕੀਤੀਆਂ ਬੇਨਤੀਆਂ secret ਕੁੰਜੀ ਸਵੀਕਾਰ ਕੀਤੀ ਜਾਂਦੀ ਹੈ। ਇਹ ਵਿਧੀ ਅਣਅਧਿਕਾਰਤ ਪਹੁੰਚ ਨੂੰ ਰੋਕਣ ਵਿੱਚ ਮਦਦ ਕਰਦੀ ਹੈ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਤੁਹਾਡਾ ਮੀਡੀਆ ਸੁਰੱਖਿਅਤ ਹੈ।
  7. ਦਸਤਖਤ ਵਿੱਚ ਕਿਹੜੇ ਮਾਪਦੰਡ ਸ਼ਾਮਲ ਕੀਤੇ ਜਾਣੇ ਚਾਹੀਦੇ ਹਨ?
  8. ਇੱਕ ਬੁਨਿਆਦੀ ਸੈੱਟਅੱਪ ਲਈ, ਸ਼ਾਮਲ ਕਰੋ timestamp. ਵਧੇਰੇ ਗੁੰਝਲਦਾਰ ਸੰਰਚਨਾਵਾਂ ਲਈ, ਹੋਰ ਵਿਕਲਪ ਸ਼ਾਮਲ ਕਰੋ ਜਿਵੇਂ ਕਿ folder, tags, ਜਾਂ context, ਪਰ ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਇਹ ਦੋਵੇਂ ਫਰੰਟਐਂਡ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤੇ ਗਏ ਹਨ FormData ਅਤੇ ਬੈਕਐਂਡ ਦਸਤਖਤ ਬਣਾਉਣਾ।
  9. ਮੈਂ ਦਸਤਖਤ ਗਲਤੀ ਦਾ ਜਲਦੀ ਨਿਪਟਾਰਾ ਕਿਵੇਂ ਕਰ ਸਕਦਾ ਹਾਂ?
  10. ਸਹੀ ਛਾਪ ਕੇ ਸ਼ੁਰੂ ਕਰੋ stringToSign ਆਪਣੇ ਬੈਕਐਂਡ ਵਿੱਚ ਅਤੇ ਪੈਰਾਮੀਟਰ ਆਰਡਰ ਅਤੇ ਬਣਤਰ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਇਸਦੀ Cloudinary ਦਸਤਾਵੇਜ਼ਾਂ ਨਾਲ ਤੁਲਨਾ ਕਰੋ। ਲੌਗਿੰਗ ਜੋੜਨਾ ਇਹ ਪ੍ਰਗਟ ਕਰ ਸਕਦਾ ਹੈ ਕਿ ਤੁਹਾਡੇ ਦਸਤਖਤ ਉਮੀਦ ਨਾਲੋਂ ਕਿੱਥੇ ਵੱਖਰੇ ਹੁੰਦੇ ਹਨ।
  11. HMAC ਕੀ ਹੈ ਅਤੇ ਇਸਦੀ ਵਰਤੋਂ ਕਲਾਉਡਾਈਨਰੀ ਅਪਲੋਡਸ ਲਈ ਕਿਉਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ?
  12. HMAC (ਹੈਸ਼-ਅਧਾਰਿਤ ਸੁਨੇਹਾ ਪ੍ਰਮਾਣਿਕਤਾ ਕੋਡ) ਇੱਕ ਕੁੰਜੀ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਹੈਸ਼ ਬਣਾਉਣ ਦਾ ਇੱਕ ਸੁਰੱਖਿਅਤ ਤਰੀਕਾ ਹੈ, ਜੋ ਡੇਟਾ ਦੀ ਇਕਸਾਰਤਾ ਅਤੇ ਪ੍ਰਮਾਣਿਕਤਾ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ। Cloudinary ਨੂੰ ਅੱਪਲੋਡਾਂ ਨੂੰ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਸਾਈਨ ਕਰਨ ਲਈ HMAC-SHA1 ਦੀ ਲੋੜ ਹੈ।
  13. ਕੀ ਮੈਂ ਲੋਕਲਹੋਸਟ 'ਤੇ ਦਸਤਖਤ ਬਣਾਉਣ ਦੀ ਜਾਂਚ ਕਰ ਸਕਦਾ ਹਾਂ?
  14. ਹਾਂ, ਲੋਕਲਹੋਸਟ 'ਤੇ ਬੈਕਐਂਡ ਦਸਤਖਤ ਬਣਾਉਣਾ ਆਮ ਗੱਲ ਹੈ। ਬਸ ਇਹ ਯਕੀਨੀ ਬਣਾਓ ਕਿ API key ਅਤੇ secret ਤੁਹਾਡੇ ਵਿਕਾਸ ਵਾਤਾਵਰਣ ਵੇਰੀਏਬਲ ਵਿੱਚ ਸਹੀ ਢੰਗ ਨਾਲ ਸੈੱਟ ਕੀਤੇ ਗਏ ਹਨ।
  15. ਟਾਈਮਸਟੈਂਪ-ਅਧਾਰਿਤ ਅਤੇ ਟੋਕਨ-ਅਧਾਰਿਤ ਪ੍ਰਮਾਣਿਕਤਾ ਵਿੱਚ ਕੀ ਅੰਤਰ ਹੈ?
  16. ਟਾਈਮਸਟੈਂਪ-ਅਧਾਰਿਤ ਪ੍ਰਮਾਣਿਕਤਾ ਲਈ ਹਰੇਕ ਅਪਲੋਡ ਲਈ ਇੱਕ ਵੈਧ ਟਾਈਮਸਟੈਂਪ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਜਦੋਂ ਕਿ ਟੋਕਨ-ਅਧਾਰਿਤ ਪਹੁੰਚ ਲਈ ਇੱਕ ਅਸਥਾਈ ਟੋਕਨ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ। ਟਾਈਮਸਟੈਂਪ-ਅਧਾਰਿਤ ਸਧਾਰਨ ਅਤੇ ਆਮ ਤੌਰ 'ਤੇ ਕਲਾਉਡਾਈਨਰੀ ਨਾਲ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
  17. ਕੀ ਹੋਰ ਪੈਰਾਮੀਟਰ ਜੋੜਨ ਨਾਲ ਗਲਤੀ ਹੋ ਸਕਦੀ ਹੈ?
  18. ਹਾਂ, ਹਰੇਕ ਵਾਧੂ ਪੈਰਾਮੀਟਰ ਨੂੰ ਦੋਵੇਂ ਫਰੰਟਐਂਡ ਵਿੱਚ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ FormData ਅਤੇ ਬੈਕਐਂਡ generateSignature ਫੰਕਸ਼ਨ. ਜੇਕਰ ਉਹ ਇਕਸਾਰ ਨਹੀਂ ਹਨ, ਤਾਂ ਇਹ "ਅਵੈਧ ਦਸਤਖਤ" ਗਲਤੀ ਵੱਲ ਲੈ ਜਾਵੇਗਾ।
  19. ਪੈਰਾਮੀਟਰ ਆਰਡਰਿੰਗ ਦਸਤਖਤ ਨੂੰ ਕਿਵੇਂ ਪ੍ਰਭਾਵਿਤ ਕਰਦੀ ਹੈ?
  20. ਪੈਰਾਮੀਟਰ ਆਰਡਰਿੰਗ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਵਰਤੋ sort.Strings(keys) ਉਹਨਾਂ ਨੂੰ ਬੈਕਐਂਡ ਵਿੱਚ ਵਰਣਮਾਲਾ ਅਨੁਸਾਰ ਆਰਡਰ ਕਰਨ ਲਈ; ਇਹ ਆਰਡਰ Cloudinary ਦੀਆਂ ਉਮੀਦਾਂ ਨਾਲ ਮੇਲ ਖਾਂਦਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ।
  21. ਕੀ ਇਸ ਅੱਪਲੋਡ ਨੂੰ ਵਾਤਾਵਰਣ ਵਿੱਚ ਸੁਰੱਖਿਅਤ ਢੰਗ ਨਾਲ ਸਵੈਚਲਿਤ ਕਰਨ ਦਾ ਕੋਈ ਤਰੀਕਾ ਹੈ?
  22. ਹਾਂ, HMAC ਪ੍ਰਕਿਰਿਆ ਦੇ ਨਾਲ ਵਾਤਾਵਰਣ-ਵਿਸ਼ੇਸ਼ API ਕੁੰਜੀਆਂ ਅਤੇ ਰਾਜ਼ ਦੀ ਵਰਤੋਂ ਕਰਨਾ, ਵੱਖ-ਵੱਖ ਵਾਤਾਵਰਣਾਂ (ਦੇਵ, ਸਟੇਜਿੰਗ, ਉਤਪਾਦਨ) ਵਿੱਚ ਸੁਰੱਖਿਅਤ, ਇਕਸਾਰ ਦਸਤਖਤਾਂ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ।

Cloudinary ਅੱਪਲੋਡ ਗਲਤੀਆਂ 'ਤੇ ਅੰਤਿਮ ਵਿਚਾਰ

Cloudinary ਨਾਲ ਮੀਡੀਆ ਅੱਪਲੋਡਾਂ ਨੂੰ ਸੰਭਾਲਣ ਵੇਲੇ, "ਅਵੈਧ ਦਸਤਖਤ" ਤਰੁੱਟੀਆਂ ਤੋਂ ਬਚਣ ਲਈ ਇੱਕ ਸੁਰੱਖਿਅਤ ਅਤੇ ਇਕਸਾਰ ਦਸਤਖਤ ਬਣਾਉਣ ਦੀ ਪ੍ਰਕਿਰਿਆ ਕੁੰਜੀ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਕਿ ਟਾਈਮਸਟੈਂਪ ਅਤੇ ਪੈਰਾਮੀਟਰ ਆਰਡਰਿੰਗ ਸਹੀ ਹੈ ਇੱਕ ਨਿਰਵਿਘਨ ਏਕੀਕਰਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਸਹੀ ਹਸਤਾਖਰ ਸਤਰ ਦੀ ਜਾਂਚ ਕਰਨਾ ਮੁੱਦਿਆਂ ਨੂੰ ਉਜਾਗਰ ਕਰਨ ਵਿੱਚ ਵੀ ਮਦਦ ਕਰ ਸਕਦਾ ਹੈ।

ਬੈਕਐਂਡ ਅਤੇ ਫਰੰਟਐਂਡ ਕਦਮਾਂ ਨੂੰ ਇਕਸਾਰ ਕਰਕੇ, ਇਹ ਪਹੁੰਚ ਇੱਕ ਮਜ਼ਬੂਤ ​​ਅਤੇ ਲਚਕਦਾਰ ਹੱਲ ਬਣਾਉਂਦਾ ਹੈ। Go ਅਤੇ JavaScript ਦੇ ਨਾਲ HMAC ਹੈਸ਼ਿੰਗ ਤਕਨੀਕ ਸੁਰੱਖਿਅਤ, ਰੀਅਲ-ਟਾਈਮ ਅੱਪਲੋਡ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦੀ ਹੈ, ਤੁਹਾਨੂੰ ਤੁਹਾਡੀਆਂ ਐਪਲੀਕੇਸ਼ਨਾਂ ਵਿੱਚ ਮੀਡੀਆ ਅਤੇ ਹੋਰ ਸਰੋਤਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਇੱਕ ਭਰੋਸੇਯੋਗ ਤਰੀਕਾ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ! 🎉

ਹੋਰ ਪੜ੍ਹਨਾ ਅਤੇ ਹਵਾਲੇ
  1. ਏਪੀਆਈ ਦਸਤਖਤਾਂ ਲਈ ਸੁਰੱਖਿਅਤ ਅਪਲੋਡ ਵਿਧੀਆਂ ਅਤੇ HMAC ਦੀ ਵਰਤੋਂ ਬਾਰੇ ਵੇਰਵੇ ਇਸ 'ਤੇ ਲੱਭੇ ਜਾ ਸਕਦੇ ਹਨ ਕਲਾਉਡਾਈਨਰੀ ਦਾ ਅਧਿਕਾਰਤ ਦਸਤਾਵੇਜ਼ .
  2. ਗੋ ਦੇ HMAC ਅਤੇ SHA1 ਹੈਸ਼ਿੰਗ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਲਈ, ਵੇਖੋ ਜਾਓ ਪ੍ਰੋਗਰਾਮਿੰਗ ਭਾਸ਼ਾ ਦਸਤਾਵੇਜ਼ ਕ੍ਰਿਪਟੋ ਪੈਕੇਜ ਵਿੱਚ HMAC 'ਤੇ.
  3. ਉਹਨਾਂ ਲਈ ਜੋ Axios ਨੂੰ ਫਾਈਲ ਅਪਲੋਡ ਪ੍ਰਕਿਰਿਆਵਾਂ ਨਾਲ ਜੋੜਨਾ ਚਾਹੁੰਦੇ ਹਨ, ਵੇਖੋ Axios ਦਸਤਾਵੇਜ਼ੀ ਹੋਰ ਉਦਾਹਰਣਾਂ ਅਤੇ ਵਿਕਲਪਾਂ ਲਈ।