簡體   English   中英

跨域ajax和php會話

[英]Cross Domain ajax and php sessions

我對此感到困惑...我正在執行遠程微件類型的設置,我們將控制兩個域,因此安全性不是問題。 我正在使用jsonp來允許跨域ajax請求。

訪問的站點是domain1.com,其中包括:

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

file.js使用jQuery發出ajax請求:

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

它在某種程度上通過向導完成了這些步驟中的幾個步驟,從而從遠程服務器中使用html重新加載div。

我遇到的問題是,在每個ajax請求上,我都獲得了一個新的php會話ID,並且會話數據消失了。 PHP方面的工作很好,如果我從相同的域運行相同的腳本(仍使用jsonp),則一切正常。 但是,從遠程域執行此操作,會話就不會持續進行。 我不知道為什么會這樣,php端正在設置並從其自己的域請求cookie。 我不需要從JS訪問cookie。 該cookie被寫入並保存在服務器上。 但是,當我檢查瀏覽器中存儲的cookie時,每個請求的會話ID都已更改。

有任何想法嗎?

好吧,我創建了一個非常簡單的測試用例,它很好用。

實際的應用程序正在使用cakephp及其會話。 我嘗試切換為僅使用$ _SESSION,但是沒有用。 我嘗試將session_start()添加到控制器,但是沒有用。 最后,我在配置中禁用cakephp會話,現在它可以正常工作。

我不知道為什么它不起作用,但似乎與cakephp有關。

在同一個域中的一個php文件點阿賈克斯JSONP請求,並在該PHP文件,trought cUrl作者 ,執行請求到第二域。

簡而言之,將php文件用作兩個域之間的隧道(cUrl只是一個示例)

抱歉,我沒有讀到您正在使用jsonp。 所以這不是解決方案...

使用Javascript,您將無法對與您的網站所運行的域不同的域進行AJAX調用。 這稱為“同源起點策略”,可在您的站點上出現XSS問題時提供更高的安全性。 有關更多信息,請參閱Wikipedia文章: http : //en.wikipedia.org/wiki/Same_origin_policy通過在服務器上提供路由php腳本,您可以將服務器上的Javascript AJAX調用路由到目標域/服務/其他。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM