Pertanyaan Header set Access-Control-Allow-Origin di .htaccess tidak berfungsi


Saya tidak tahu mengapa saya .htaccess pengaturan tajuk tidak berfungsi.

Saya .htaccess isi file:

Header set Access-Control-Allow-Origin *
Header always set Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"
Header always set Access-Control-Allow-Headers "*"
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]

Tapi ketika saya menghapus Headerdan tambahkan mereka index.php maka semuanya berjalan dengan baik.

header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS");
header("Access-Control-Allow-Headers: *");

Apa yang saya lewatkan?


76
2018-05-17 17:33


asal


Jawaban:


Ini seharusnya berfungsi:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

121
2017-07-27 16:19



Sekadar catatan, saya mengalami masalah yang sama dan tidak ada jawaban yang berhasil.

Saya menggunakan alat pemeriksa header: http://www.webconfs.com/http-header-check.php

Saya sedang menguji dengan IP saya (http://192.0.2.1/upload) dan apa yang kembali adalah sebagai berikut:

HTTP/1.1 301 Moved Permanently => 
Date => Sat, 10 Jan 2015 04:03:35 GMT
Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
Location => http://192.0.2.1/upload/
Content-Length => 380
Connection => close
Content-Type => text/html; charset=iso-8859-1

Terjadi pengalihan dan permintaan AJAX tidak menghormati / mengikuti arahan ulang.

Ternyata itu adalah garis miring yang hilang di akhir domain (http://192.0.2.1/upload/)

Saya diuji lagi dengan garis miring di bagian akhir dan saya mendapatkan ini di bawah. Menambahkan slash di skrip juga, dan sekarang berfungsi.

HTTP/1.1 200 OK => 
Date => Sat, 10 Jan 2015 04:03:53 GMT
Server => Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e PHP/5.3.8 mod_perl/2.0.4 Perl/v5.10.1
X-Powered-By => PHP/5.3.8
Access-Control-Allow-Origin => *
Access-Control-Allow-Methods => PUT, GET, POST, DELETE, OPTIONS
Access-Control-Allow-Headers => *
Content-Length => 1435
Connection => close
Content-Type => text/html

Gunakan alat ini untuk menguji apakah tajuk Anda bagus dan untuk memecahkan masalah yang terjadi.


13
2018-01-10 04:36



Saya memiliki hosting bersama di GoDaddy. Saya perlu jawaban untuk pertanyaan ini juga, dan setelah mencari di sekitar saya menemukan bahwa itu mungkin.

Saya menulis file .htaccess, meletakkannya di folder yang sama dengan halaman tindakan saya. Berikut adalah isi dari file .htaccess:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"

Inilah panggilan ajax saya:

    $.ajax({
        url: 'http://www.mydomain.com/myactionpagefolder/gbactionpage.php',  //server script to process data
        type: 'POST',
        xhr: function() {  // custom xhr
            myXhr = $.ajaxSettings.xhr();
            if(myXhr.upload){ // check if upload property exists
                myXhr.upload.addEventListener('progress',progressHandlingFunction, false); // for handling the progress of the upload
            }
            return myXhr;
        },
        //Ajax events
        beforeSend: beforeSendHandler,
        success: completeHandler,
        error: errorHandler,
        // Form data
        data: formData,
        //Options to tell JQuery not to process data or worry about content-type
        cache: false,
        contentType: false,
        processData: false
    });

Lihat artikel ini untuk referensi:

Header set Access-Control-Allow-Origin di .htaccess tidak berfungsi


7
2018-05-02 15:54



Saya mengaktifkan header modul Apache a2enmod header, dan masalah telah dipecahkan.


6
2017-12-10 04:32



Hati-hati pada:

 Header add Access-Control-Allow-Origin "*"

Ini sama sekali tidak bijaksana untuk memberikan akses kepada semua orang. Lebih baik mengizinkan daftar hanya host tepercaya yang tahu ...

Header add Access-Control-Allow-Origin "http://aaa.example"
Header add Access-Control-Allow-Origin "http://bbb.example"
Header add Access-Control-Allow-Origin "http://ccc.example"

Salam,


5
2017-10-07 08:55



Coba ini di .htaccess dari folder root eksternal

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
</IfModule>

Hati-hati: Header tambahkan Access-Control-Allow-Origin "*" Ini sama sekali tidak bijaksana untuk memberikan akses ke semua orang. Saya pikir Anda harus pengguna:

<IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "http://example.com"
</IfModule>

3
2017-11-03 08:18



Saya memberi +1 jawaban Miro untuk tautan ke situs header-checker http://www.webconfs.com/http-header-check.php. Ini memunculkan iklan yang menjengkelkan setiap kali Anda menggunakannya, tetapi, bagaimanapun, sangat berguna untuk memverifikasi keberadaan header Access-Control-Allow-Origin.

Saya sedang membaca file .json dari javascript di halaman web saya. Saya menemukan bahwa menambahkan hal berikut ke file .htaccess saya memperbaiki masalah saat melihat halaman web saya di IE 11 (versi 11.447.14393.0):

<FilesMatch "\.(json)$">
  <IfModule mod_headers.c>
    Header set Access-Control-Allow-Origin "*"
  </IfModule>
</FilesMatch>

Saya juga menambahkan yang berikut ini ke /etc/httpd.conf (file konfigurasi Apache):

AllowOverride All

Situs header-checker memverifikasi bahwa header Access-Control-Allow-Origin sekarang sedang dikirim (terima kasih, Miro!).

Namun, Firefox 50.0.2, Opera 41.0.2353.69, dan Edge 38.14393.0.0 semua mengambil file bagaimanapun, bahkan tanpa header Access-Control-Allow-Origin. (Catatan: mereka mungkin memeriksa alamat IP, karena dua domain yang saya gunakan keduanya di-host di server yang sama, di alamat IPv4 yang sama.)

Namun, Chrome 54.0.2840.99 m (64-bit) mengabaikan header Access-Control-Allow-Origin dan gagal bagaimanapun, pelaporan yang keliru:

Tidak ada header 'Access-Control-Allow-Origin' yang ada pada yang diminta   sumber. Asal{mydomain}Oleh karena itu, akses tidak diizinkan.

Saya pikir ini harus menjadi semacam "pertama." IE berfungsi dengan benar; Chrome, Firefox, Opera, dan Edge semuanya buggy; dan Chrome adalah terburuk. Bukankah itu kebalikan dari kasus biasa?


2
2017-12-14 00:32



Setelah menghabiskan setengah hari tanpa bekerja. Menggunakan layanan pemeriksaan header meskipun semuanya bekerja. Firewall di tempat kerja melucuti mereka


0
2018-04-06 17:56