CORS - jakiś prosty przykład? hello world?

0

chciałbym zrobić ajax call, ale poprzez CORS (Cross-origin resource sharing).

Ciągle mam błędy typu:

XMLHttpRequest cannot load http://. No 'Access-Control-Allow-Origin' header is present on the requested resource.

generalnie próbowałem z wieloma przykładami, ale żaden nie pasował.
Cały czas mnie odrzuca. Zaznaczę, że nie mam problemów z ajaxem jak jest wszystko w tej samej domenie.

np. takie pytanie:
czy żeby dało się CORS to serwer też musi być ustawiony??
na apache2 nie udało mi się, jutro spróbuję nginx zainstalować.

ma ktoś jakiś prosty przykład CORS+nginx/apache+PHP+jQuery/JS ?

0

Żeby request CORS zadziałał to serwer musi dać w odpowiedzi odpowiedni nagłówek http, w php:

header('Access-Control-Allow-Origin: *'); // wszystkie domeny
header('Access-Control-Allow-Origin: http://mojadomena.pl'); // dostęp tylko dla konkretnej domeny
0

tylko to wystarczy, czy trzeba cos rownoczesnie z nginx/apache2 robix?

1

Tylko to, możesz też ustawić w konfigu serwera, żeby zawsze doklejał te nagłówki zamiast robić to w pehapie, ale nie pytaj mnie jak to zrobić, nie siedzę na backendzie.

Tu masz najprostszy przykład doklejenia odpowiedniego nagłówka do jsona:

<?php
header('Access-Control-Allow-Origin: *');
header('Content-Type: application/json');
readfile('file.json');

1

Jaki byłby sens tego zabezpieczenia, gdybyś to ty, po stronie klienta miał o tym decydować? Oczywiście, że serwer musi to mieć ustawione.

0

kurde no dziwne, niby banalna odpowiedz, niby to dzisiaj robilem a nie działało.... zarz znowu sprawdze, jak zadziała to ci dam "plusika"

0

Gdzie ustawisz to nie ma znaczenia, liczy się efekt - nagłówek ma być zwrócony.

0

no dobra, a jak dam ten naglowek w PHP, to w przypadku jQuery/ajax to pisac jakis specjalny kod (dla CORS), czy wystarczy zwyczajne ajax-requesty?
w sensie, ze jQuery ma jakos specjalnie miec zaznaczone, ze to jest CORS ?

jest takie hello world:

PHP:

<?php
header('Access-Control-Allow-Origin: *');
echo date("F d, Y h:i:s A");
?>
 

JS/ajax:

<script type="text/javascript">
$(document).ready(function(){
    $("button").click(function(){
        $.get("http://link/test.php", function(data){
            $("#result").html(data);
        });
    });
});
</script>

 <button type="button">przycisk</button>
 <div id="result"></div>

wywala nadal blad:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.

1
    header("Access-Control-Allow-Origin: *");
    header("Access-Control-Allow-Methods: *");
    header("Access-Control-Allow-Headers: *");

I wio!

0

Ok
wszystko działa.

PHP nie był zainstalowany (niby oczywiste, ale jak widac wypadlo z glowy, bo bylem pewny ze PHP juz tam dawno jest).
Stracilem z 2 godziny na to, bo te rozwiazania z header od razu byly na StackOverflow.

topic do zamknięcia, dzięki za sugestie i dobre odpowiedzi (przydały się)

1 użytkowników online, w tym zalogowanych: 0, gości: 1