Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP] CORS „Access-Control-Allow-Origin”
Forum PHP.pl > Forum > Przedszkole
kamilo818
Witam,

po zainstalowaniu na serwerze certyfikatu ssl przy próbie wysłania requestu ajaxem pojawia sie komunikat:

Zablokowano żądanie do zasobu innego pochodzenia: zasady „Same Origin Policy” nie pozwalają wczytywać zdalnych zasobów z „https://domena.pl/page/single_product_options.php”. (brakujący nagłówek CORS „Access-Control-Allow-Origin”)


  1. <script>
  2.  
  3. var id=$('.single_product').attr('id');
  4. var dataString = 'id='+id;
  5.  
  6. $.ajax({
  7. type: "POST",
  8. url: "page/single_product_options.php",
  9.  
  10. beforeSend: function () {
  11. $('.options').append('<div class="preloader"></div> ')
  12. },
  13. success: function (obj) {
  14. $('div.preloader').remove();
  15. $('.options').html(obj);
  16. }
  17. });
  18.  
  19. </script>


Czy jest na to jakieś poprawne rozwiązanie?
markuz
W PHP (jako header albo w .htaccess) dodaj:
Cytat
Access-Control-Allow-Origin: *

Albo wklej ten błąd w Google..
kamilo818
Wrzucałem w google tylko żadne rozwiązanie nie pomogło.
Dlatego pytam tutaj.

Dodanie w php nic nie zmienia.
W .htaccess jak to wkleiłem to błąd się już nie pojawia firebugu ale request i tak jest zatrzymany.

Comandeer
"Zatrzymany" – tzn? Czy serwer nie zwraca jakiegoś błędu?
kamilo818
No właśnie nie.

Z firebuga tylko nagłówek mogę odczytać :
  1. Accept
  2. */*
  3. Accept-Encoding
  4. gzip, deflate
  5. Accept-Language
  6. pl,en-US;q=0.7,en;q=0.3
  7. Host
  8. domena.pl
  9. Origin
  10. <a href="https://www.domena.pl" target="_blank">https://www.domena.pl</a>
  11. Referer
  12. <a href="https://www.domena.pl/product/12345680/produkt/" target="_blank">https://www.domena.pl/product/12345680/produkt/</a>
  13. User-Agent
  14. Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
  15. X-Requested-With
  16. XMLHttpRequest
Comandeer
Hm. Teraz pytanie, czy serwer pozwala na CORS z nagłówkiem X-Requested-With wink.gif https://developer.mozilla.org/en-US/docs/We...l-Allow-Headers
kamilo818
To rozwiązało mój problem:

  1.  
  2. var oClient = new XMLHttpRequest();
  3. oClient.open('GET', 'https://www.domena.pl/page/single_product_options.php?'+dataString); // 1
  4. oClient.onreadystatechange = function()
  5. {
  6. if (4 === this.readyState && 200 === this.status)
  7. {
  8. $('.options').html(this.responseText);
  9. }
  10. };
  11. oClient.send();
  12.  


Bez ustawiania headerów.

Poprawne rozwiązanie?
Comandeer
Jedyne, co zrobiłeś, to wyszedłeś poza jQuery i stworzyłeś żądanie ręcznie wink.gif
kamilo818
Szukałem rozwiązania w google i nic oprócz tego nie działa
Comandeer
A dodanie drugiego nagłówka:
Kod
Access-Control-Allow-Headers: X-Requested-With

?
kamilo818
Niestety nie
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.