javascript - Pengepala CORS tiada 'Access-Control-Allow-Origin' bagaimana untuk menyelesaikannya?
黄舟
黄舟 2017-05-16 13:16:09
0
6
2248
<html>
    <head>
        <meta http-equiv="access-control-allow-origin" content="https://openapi.lechange.cn">
        <script type="text/javascript" src="js/jquery-1.11.3.min.js"></script>
        <script>
            $.post('https://openapi.lechange.cn/openapi/accessToken',{"system":{"ver":"1.0","sign":"5326bdd79317a8cd215b649e75e042b6","appid":"lace1fdddaa5de4393","time":"1491895621","nonce":"49735441495760803893403522385895","appSecret":"6d5c2c727dbb4ba78fac5a0e9ece82"},"params":{"phone":"17691260000"},"id":"80"},function(data){console.log(data);},'json');
        </script>
    </head>
    <body>
        <a></a>
    </body>
</html>

Apabila berjalan pada Firefox, mesej ralat berikut muncul. Permintaan silang asal disekat: Dasar asal yang sama melarang membaca sumber jauh yang terdapat di https://openapi.lechange.cn/o... (Punca: pengepala CORS 'Access-Control-Allow-Origin' tiada).
Penyelesaian yang ditemui dalam carian dalam talian adalah dengan menambah pengepala pada halaman yang diminta. Ini tidak boleh dikendalikan, dan kaedah lain juga tidak dapat menyelesaikannya. Bagaimana untuk menyelesaikannya?

黄舟
黄舟

人生最曼妙的风景,竟是内心的淡定与从容!

membalas semua(6)
Peter_Zhu

CORS secara amnya tidak perlu dikonfigurasikan dalam penyemak imbas Penyemak imbas mendapati bahawa permintaan AJAX silang asal ini adalah permintaan yang mudah, dan secara automatik menambah medan Asal pada maklumat pengepala digunakan untuk menunjukkan sumber (protokol ) permintaan ini berasal dari + nama domain + port).
Pelayan memutuskan sama ada untuk bersetuju menerima permintaan berdasarkan nilai ini, yang bermaksud bahawa pelayan akan mempunyai senarai putih yang menunjukkan sumber mana yang dibenarkan dan Access-Control-Allow-Origin disertakan dalam pengepala respons senarai putih.
Pelayar mendapati bahawa maklumat pengepala respons ini tidak mengandungi medan Access-Control-Allow-Origin, jadi ia tahu bahawa sesuatu telah berlaku dan menimbulkan ralat, iaitu gesaan yang anda temui ialah hasil pemulangan dipintas oleh penyemak imbas, dan bukan permintaan itu tidak boleh dihantar.

Jadi apa yang anda perlukan ialah mengkonfigurasi senarai putih ini pada pelayan, bukan menukar halaman.

Untuk prinsip CORS, anda boleh membaca artikel ini
Untuk cara mengkonfigurasi tomcat, anda boleh membaca dokumen ini

仅有的幸福

Bolehkah anda menggunakan jsonp merentas domain?

$.ajax({
    url: 'https://openapi.lechange.cn/openapi/accessToken',
    type: 'post',
    dataType:'jsonp',
    data: '{"system":{"ver":"1.0","sign":"5326bdd79317a8cd215b649e75e042b6","appid":"lace1fdddaa5de4393","time":"1491895621","nonce":"49735441495760803893403522385895","appSecret":"6d5c2c727dbb4ba78fac5a0e9ece82"},"params":{"phone":"17691260000"},"id":"80"}',
    success:function(data){
       console.log(data);
     },
})
小葫芦

cors tidak memerlukan konfigurasi bahagian hadapan, biarkan jurutera bahagian belakang anda mengkonfigurasinya pada pelayan

小葫芦

Nginx tambah sokongan pengepala

左手右手慢动作

Gunakan nod atau ular sawa untuk menulis geganti perangkak atau menambah proksi

淡淡烟草味

Tampal kod berikut di bahagian atas fail kemasukan bahagian pelayan

Selepas masuk dalam talian, sebaiknya tukar * dalam Access-Control-Allow-Origin: * kepada nama domain tertentu yang membenarkan akses

header('Access-Control-Allow-Origin:*');
header('Access-Control-Allow-Methods:HEAD,GET,POST,OPTIONS,PATCH,PUT,DELETE');
header('Access-Control-Allow-Headers:Origin,X-Requested-With,Authorization,Content-Type,Accept,Z-Key');
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan