Otentikasi tidak dalam format yang benar saat mengatur Properti Layanan Azure Blob (REST API)

Saya mencoba menetapkan aturan CORS di akun Azure Blob Storage saya dengan mengikuti petunjuk ini.

Ini adalah kesalahan yang saya terima setelah membuat permintaan saya:

400 Informasi autentikasi tidak diberikan dalam format yang benar. Periksa nilai header Otorisasi

URL Permintaan:

PUT https://[MyAccountName].blob.core.windows.net/?restype=service&comp=properties

Judul permintaan:

x-ms-version: 2013-08-15
x-ms-date: Tue, 25 Feb 2014 13:02:00 GMT
Authorization: SharedKey
[MyAccountName]: [MyAccountKey]
Content-Length: 329
Host: [MyAccountName].blob.core.windows.net

Badan permintaan:

<?xml version="1.0" encoding="utf-8"?>
<StorageServiceProperties>
    <Cors>   
          <CorsRule>
                <AllowedOrigins>http://www.example.com</AllowedOrigins>
                <AllowedMethods>GET</AllowedMethods>
                <ExposedHeaders>x-ms-meta-data*,x-ms-meta*</ExposedHeaders>
                <AllowedHeaders>x-ms-meta-target*,x-ms-meta*</AllowedHeaders>
                <MaxAgeInSeconds>200</MaxAgeInSeconds>
        </CorsRule>
    <Cors>
</StorageServiceProperties>

person kaques    schedule 25.02.2014    source sumber


Jawaban (3)


Permintaan tersebut memiliki header Otorisasi yang tidak lengkap. Itu harus berisi skema otentikasi, nama akun penyimpanan, dan tanda tangan. Misalnya;

Authorization: SharedKey myaccount:Z1lTLDwtq5o1UYQluucdsXk6/iB7YxEu0m6VofAEkUE=

Untuk informasi selengkapnya, lihat Otentikasi untuk Layanan Penyimpanan Windows Azure. Di sisi lain, jika Anda menggunakan salah satu Perpustakaan Klien Windows Azure Storage, itu akan menangani otentikasi untuk Anda. Untuk perpustakaan .NET, silakan lihat paket NuGet kami.

person Serdar Ozler    schedule 26.02.2014

Bagi orang-orang yang membuka halaman ini dan bertanya-tanya mengapa Anda mendapatkan kesalahan ini meskipun Anda menggunakan URL Tanda Tangan Akses Bersama, kemungkinan besar Anda mengirimkan token APLIKASI ANDA ke Azure. Pastikan untuk TIDAK menyertakan header Otorisasi dalam kasus ini.

person jsgoupil    schedule 19.01.2019
comment
Ya. Saya menambahkan header autentikasi dasar dari sesuatu yang lain dan menemukan ini. - person Paul; 24.01.2019

Mengikuti apa yang dikatakan @jsgoupil:

Bagi orang-orang yang membuka halaman ini dan bertanya-tanya mengapa Anda mendapatkan kesalahan ini meskipun Anda menggunakan URL Tanda Tangan Akses Bersama, kemungkinan besar Anda mengirimkan token APLIKASI ANDA ke Azure. Pastikan untuk TIDAK menyertakan header Otorisasi dalam kasus ini.

Jika Anda memiliki interseptor, Anda dapat menambahkan lompatan ke permintaan dengan mengikuti instruksi pada postingan stackOverflow ini: https://stackoverflow.com/a/49047764/5232022

export const InterceptorSkipHeader = 'X-Skip-Interceptor'; // <-- ADD THIS

@Injectable()
export class SkippableInterceptor implements HttpInterceptor {

  intercept(req: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    // Add the following if to your interceptor
    if (req.headers.has(InterceptorSkipHeader)) {
      const headers = req.headers.delete(InterceptorSkipHeader);
      return next.handle(req.clone({ headers }));
    }

    ...  // intercept
  }

}

Lalu kapan pun Anda ingin melewati intersepsi untuk permintaan tertentu:

const headers = new HttpHeaders().set(InterceptorSkipHeader, ''); // <-- this will skip it

this.httpClient.get<ResponseType>(someUrl, { headers }) // <-- dont forget to add it here as well
person Daniel C    schedule 27.05.2020
comment
Terima kasih - Saya mengalami masalah ini setiap beberapa minggu dan selalu lupa apa masalahnya. :) - person RichS; 30.07.2020