Setiap kali Anda mengirim permintaan API HTTP ke server Simple Message Queue (sebelumnya MNS), Anda harus menyertakan tanda tangan di header Otorisasi HTTP. Jika tanda tangan yang disertakan dalam header berbeda dari tanda tangan yang dihitung oleh server, server akan menolak permintaan dan mengembalikan pesan kesalahan 403 SignatureDoesNotMatch. Topik ini menjelaskan cara menyelesaikan masalah tersebut.
Masalah
Pesan kesalahan "403 SignatureDoesNotMatch" muncul saat Anda memanggil operasi API SMQ.
Penyebab
Setiap kali Anda mengirim permintaan API HTTP ke server SMQ, Anda harus menyertakan tanda tangan di header Otorisasi HTTP. Jika tanda tangan yang disertakan dalam header tidak sesuai dengan tanda tangan yang dihitung oleh server, server akan menolak permintaan dan mengembalikan pesan kesalahan 403 SignatureDoesNotMatch.
Solusi
Untuk menyelesaikan masalah ini, ikuti langkah-langkah berikut:
Periksa apakah URL permintaan yang ditentukan valid. Untuk informasi lebih lanjut, lihat Struktur permintaan API.
Periksa apakah ID AccessKey dan Rahasia AccessKey yang digunakan valid. Anda dapat menggunakan akun Alibaba Cloud Anda untuk mengajukan dan mengelola ID AccessKey dan Rahasia AccessKey di Konsol Manajemen Alibaba Cloud.
Gunakan Tandatangani permintaan untuk memverifikasi tanda tangan yang dihasilkan.
Periksa apakah parameter permintaan sesuai dengan spesifikasi permintaan. Daftar berikut mencakup kesalahan umum. Untuk informasi lebih lanjut tentang spesifikasi permintaan, lihat Tandatangani permintaan.
Versi API tidak valid. Untuk informasi lebih lanjut tentang versi API terbaru, lihat Struktur permintaan.
Format tanggal tidak valid.
Header yang dimulai dengan
x-mns-tidak sesuai dengan spesifikasi.
Referensi
Contoh berikut menunjukkan cara menghitung tanda tangan.
Contoh header HTTP:
GET /MyQueue HTTP/1.1 Host: 1xxxx0.mns.cn-hangzhou.aliyuncs.com Date: Thu, 09 Jul 2015 03:01:34 GMT x-mns-version:2015-06-06Contoh string-to-sign:
GET (Line feed) (Line feed) Thu, 09 Jul 2015 03:01:34 GMT x-mns-version:2015-06-06 /MyQueueJika ID AccessKey adalah nilai parameter
TestAccessIDdan Rahasia AccessKey adalah nilai parameterTestAccessSecret, sistem menghitung tanda tangan menggunakan algoritma enkripsi berdasarkan kombinasi nilai-nilai tersebut dan string-to-sign.