Çapraz Etki ajax ve php oturumları

3 Cevap php

Ben bu şaşıp ... Ben kurulum uzaktan widgety türü yapıyorum güvenlik sözkonusu değil yani, biz her iki etki alanı kontrol edeceğiz. Ben etki alanı ajax isteklerini izin JSONP kullanıyorum.

Ziyaret edilen sitesi içerirken, hangi domain1.com olduğunu:

<script src="domain2.com/file.js"></script>

file.js ajax isteklerini yapmak için jQuery kullanır:

$.ajax({
   url: 'http://domain2.com/getdata',
   dataType: 'jsonp',
   success: function(response) {
       div.html( response );
   }
});

Bu uzak sunucudan html div yeniden, biraz bir sihirbazın bu adımları birkaç geçer.

Ben çalıştırıyorum sorun her ajax isteği üzerine, ben yeni bir php session id almak ve benim oturum verileri kaybolduktan olmasıdır. Ben her şey iyi çalışıyor, (hala jsonp kullanarak) aynı etki aynı komut dosyası çalıştırırsanız şeyler PHP sonu gayet iyi. Ancak, bir uzak etki yapıyor, ve oturum etrafında sopa yok. Ben neden bu php uç ayarı ve kendi etki alanından bir çerez istiyor, hiçbir fikrim yok. Ben JS çerez erişmek gerekmez. Çerez sunucu üzerinde yazılı ve kaydedilir ediliyor. Ben tarayıcıda saklanan çerezleri kontrol ederken Fakat her isteği, session id değişti.

Herhangi bir fikir?

3 Cevap

Peki ben çok basit bir test durumu oluşturulur ve sadece iyi çalıştı.

Gerçek App CakePHP'ye ve onların oturumları kullanıyor. Ben işe yaramadı, sadece yerine $ _SESSION kullanarak geçiş çalıştı. Ben denetleyiciye session_start () ekleyerek denedim, işe yaramadı. Sonunda config cakephp oturumları devre dışı, ve şimdi gayet güzel çalışıyor.

Ben çalışma değildi neden hiçbir fikrim yok ama CakePHP ile bir aksaklık gibi görünüyor.

Aynı etki bir php dosyasına ajax jsonp request gelin ve php dosyasında, trought cUrl, ikinci etki isteği yapmak.

Kısacası, (Curl sadece bir örnektir) iki alan arasında bir tünel gibi bir php dosyası kullanmak

Üzgünüm, jsonp kullandığınız okumadım. Yani bu çözüm değil ...

With Javascript you are not able to do AJAX calls to a domain different than the domain your website is running on. This is called Same origin policy and provides more security in case there are XSS issues on your site. See the Wikipedia article for more info: http://en.wikipedia.org/wiki/Same_origin_policy By providing a routing php script on your server you are able to route those Javascript AJAX calls over your server to the target domain / service / whatever.