Rumah  >  Soal Jawab  >  teks badan

"Terdapat isu keserasian antara Mercure, Symfony dan Vue"

<p>Saya menghadapi masalah mengkonfigurasi mercure menggunakan vue dan symfony. Saya menggunakan hab mercure yang dilampirkan dalam symfony cli. Dalam fail .env saya menukar url untuk mercure untuk menggunakan http kerana ini akan menyebabkan ralat sijil (disediakan oleh symfony). </p> <p><strong>.env</strong></p> <pre class="brush:php;toolbar:false;">MERCURE_URL=http://localhost:8000/.well-known/mercure MERCURE_PUBLIC_URL=http://localhost:8000/.well-known/mercure MERCURE_JWT_SECRET="!ChangeMe!"</pre> <p>Apabila saya membuka aplikasi symfony dalam penyemak imbas (cth. http://localhost:8000) dan menambah skrip berikut dalam konsol untuk ujian: </p> <pre class="brush:php;toolbar:false;">const eventSource = new EventSource('http://localhost:8000/.well-known/mercure?topic=' + encodeURIComponent('http:// example.com/books/1')); eventSource.onmessage = acara => // Fungsi ini dipanggil setiap kali pelayan menerbitkan kemas kini console.log(JSON.parse(event.data)); }</pre> <p>Ia berfungsi dan saya boleh menyiarkan beberapa perubahan dalam tab lain. Walau bagaimanapun, apabila saya melakukan perkara yang sama dalam aplikasi vue saya yang terletak di http://localhost:8080, konsol memaparkan ralat berikut: </p> <pre class="brush:php;toolbar:false;">Akses kepada sumber di 'http://localhost:8000/.well-known/mercure?topic=http://example.com/books/1 ' from origin 'http://localhost:8080' telah disekat oleh dasar CORS: Tiada pengepala 'Access-Control-Allow-Origin' pada sumber yang diminta.</pre> <p>Selain itu, saya mempunyai dua lagi soalan:</p> <ol> <li>Mengapa saya mendapat ralat 401 apabila saya menampal token jwt ke dalam env, tetapi tidak apabila menggunakan token jwt di atas? </li> <li>Mengapa saya tidak boleh menggunakan symfony serve dengan https? Saya menghadapi ralat "TransportException: fopen(): Tidak dapat mencari sijil CN". </li> </ol></p>
P粉023650014P粉023650014420 hari yang lalu545

membalas semua(1)saya akan balas

  • P粉445750942

    P粉4457509422023-08-27 10:36:18

    Ini disebabkan oleh CORS kerana VueJS berjalan pada domain yang berbeza daripada tempat Mercure dipasang.
    Saya menggunakan Mercure dengan karang Docker, tetapi jika anda melancarkannya dari CLI, cuba tambah --cors-allowed-origins='http://localhost:8000 http://localhost:8080'

    Soalan lain 1: Saya rasa anda harus menggunakan kunci yang sama dalam konfigurasi .env dan mercure

    • di .env中:MERCURE_JWT_SECRET="Secret123"
    • Apabila mula merkuri: --jwt-key='Secret123'

    balas
    0
  • Batalbalas