Martin-WulkSoft Posted August 2, 2014 Share Posted August 2, 2014 Testuje ajax-a i o ile we froncie wszystko działa, to po wywołaniu pliku z backoffice nic się nie dzieje, a w konsoli przeglądarki otrzymuje komunikat 302 Moved - do strony głównej Po usunięciu dwóch pierwszych linijek (includów) w ajax.php wszystko działa ,ale wtedy z kolei nie mogę dostać się do metod danych klas. Czy można jakoś to obejść ? ajax.php require_once(dirname(__FILE__).'../../../config/config.inc.php'); require_once(dirname(__FILE__).'../../../init.php'); switch (Tools::getValue('method')) { case 'myMethod' : die( Tools::jsonEncode( array('result'=>'my_value'))); break; default: exit; } exit; Link to comment Share on other sites More sharing options...
vekia Posted August 2, 2014 Share Posted August 2, 2014 gdzie plik jest zlokalizowany i w jaki sposób go wywołujesz? Link to comment Share on other sites More sharing options...
Martin-WulkSoft Posted August 2, 2014 Author Share Posted August 2, 2014 Plik ajaxa w katalogu /modules/mymodule/ajax.php wywołuje przez dodanie w getContent() pliku z JavaScriptem public function getContent() { $this->context->controller->addJS(($this->_path).'js/admin.js'); $(document).ready(function() { $.ajax({ type: 'GET', url: "/modules/mymodule/ajax.php", data: 'method=myMethod' , dataType: 'json', success: function(json) { alert('ok') } }); }); Jak dołączam ten sam plik do nagłówka strony głównej przez hookDisplayHeader() wszystko działa dostaje zwrócone dane i komunikat OK Link to comment Share on other sites More sharing options...
vekia Posted August 2, 2014 Share Posted August 2, 2014 a co dzieje się jak otworzysz plik w przegladarce http://strona.com/modules/mymodule/ajax.php takie samo przekierowanie? czy w ten sam sposob dziala kazdy inny plik .php ? (w sensie, ze przekierowuje) Link to comment Share on other sites More sharing options...
Martin-WulkSoft Posted August 3, 2014 Author Share Posted August 3, 2014 Wszystko działa poprawnie (jak podaje parametry ajax.php?method=myMethod otrzemuje zmienną) ale gdy chcę się odwołać z backoffica przez $.ajax dostaje komuniakt w konsoli chroma Remote Address:88.198.99.999:80 Request URL:http://mojastrona.pl/dddddd/modules/mymodule/ajax.php Request Method:POST Status Code:302 Moved XMLHttpRequest cannot load http://www.mojastrona.pl/d1/index.php?. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://mojastrona.pl' is therefore not allowed access. index.php?controller=AdminModules&token=e3c6751b2fc42abe68939b91d665d3a3&configure=mymodule&tab_m…:1 Jak w pliku ajax.php wprowadzę specjalnie błąd wtedy dostaje komunikat 200 OK i w podglądzie widzę że php wyrzucił błąd. Link to comment Share on other sites More sharing options...
Martin-WulkSoft Posted August 3, 2014 Author Share Posted August 3, 2014 Sprecyzuję sformułowanie: dziła normalnie - widzę białą stronę, a jak dorzucam parametry zwraca Mi zmienną Link to comment Share on other sites More sharing options...
vekia Posted August 3, 2014 Share Posted August 3, 2014 XMLHttpRequest cannot load http://www.mojastrona.pl/d1/index.php?. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://mojastrona.pl' is therefore not allowed access. index.php?controller=AdminModules&token=e3c6751b2fc42abe68939b91d665d3a3&configure=mymodule&tab_m…:1 Czy "domena" z którą łączysz się do back office odpowiada domenie sklepu? Błędy acces-control-allow-origin w zapytaniach ajax związane z się kiedy próbujesz połączyć się z domeną B, będąc (wywołując zapytanie ajax) z domeny A Link to comment Share on other sites More sharing options...
Martin-WulkSoft Posted August 4, 2014 Author Share Posted August 4, 2014 Doamena sklepu to : http://mojastrona.pl/developer/index.php Domena zaplecza: http//:mojastrona.pl/developer/panel/index.php Przed napisaniem posta szukałem w google i znalazłem tylko jednego posta z kodem, który działał ale też nie miał dołączonych includów. Po dodaniu includów następowało przekierowanie require_once(dirname(__FILE__).'../../../config/config.inc.php'); require_once(dirname(__FILE__).'../../../init.php'); Czy znasz może jakiś darmowy moduł z zapleczem ajaxa żeby podejrzeć jakieś rozwiązania ? Link to comment Share on other sites More sharing options...
vekia Posted August 4, 2014 Share Posted August 4, 2014 w prestashop 1.5.x moduł homeslider, ma plik ajax_homeslider.php Link to comment Share on other sites More sharing options...
Martin-WulkSoft Posted August 4, 2014 Author Share Posted August 4, 2014 Przed chwilą testowałem homeslider i przy zapisie kolejności slajdów wyskoczyło mi dokładnie takie samo przekierowanie 302 Moved jak przy moim pliku ajax.php i dane kolejności slajdów nie zostały zapisane. Muszę zainstalować PS w innej lokalizacji i zobaczyć co jest nie tak skoro wiem że to nie jest z winy kodu. Link to comment Share on other sites More sharing options...
vekia Posted August 4, 2014 Share Posted August 4, 2014 ale zobacz, ja już powiedzialem co jest nie tak XMLHttpRequest cannot load http://www.mojastrona.pl/d1/index.php?. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://mojastrona.pl' is therefore not allowed access. index.php? łączysz się przez www kiedy Twoj sklep nie korzysta z www traktuj to www jako subdomenę, co oznacza tyle, że będąc na domenie a próbujesz połączyć się z domeną b za pośrednictwem ajax nie jest to możliwe! Link to comment Share on other sites More sharing options...
Martin-WulkSoft Posted August 4, 2014 Author Share Posted August 4, 2014 Dziś bedę leniwy i zapytam się wprost jak to naprawić ? Link to comment Share on other sites More sharing options...
Martin-WulkSoft Posted August 4, 2014 Author Share Posted August 4, 2014 Hosting linuxpl.com Link to comment Share on other sites More sharing options...
vekia Posted August 4, 2014 Share Posted August 4, 2014 po prostu loguj się do back office za pośrednictwem poprawnej domeny, tj. jeżeli Twój sklep korzysta z domeny www.SKLEP.com do backoffice loguj się za pośrednictwem www.SKLEP.com/admin/ jeżeli Twój sklep korzysta z domeny bez www, tj. sklep.com do backoffice loguj się za pośrednictwem sklep.com/admin/ problem który poruszyłeś nie jest do rozwiązania - bo to zabezpieczenia przeglądarek przez możliwymi "hackami". o co chodzi? Kod zapytania ajax to javascript, możesz z łatwością zmienić domenę zapytania ajax, co oznacza tyle, że możesz pobrać dane z jakiejś innej strony (!). Wyobraźmy sobie, że skrypt wykonuje zapytanie ajax do jakiegoś pliku na Twojej domenie, wynik tego zapytania przekazuje dalej i zapisuje w bazie danych. Teraz ingerujemy w skrypt, zmieniamy adres zapytania ajax na swój plik na innej domenie, przekazujemy jakieś "lewe" dane i robimy sraczkę w bazie danych. no i właśnie ten cały "access origin" to zabezpieczenie przed takimi hackami. Link to comment Share on other sites More sharing options...
Martin-WulkSoft Posted August 5, 2014 Author Share Posted August 5, 2014 Sprawdzałem dział, Cały czas łączyłem się przez skrót utworzony na pasku przeglądarki i dlatego zawsze wyskakiwał błąd Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now