2013-06-26 47 views
0

我有一個本地服務器:127.0.0.1:8000和一個網站:127.0.0.1:9000都與play2框架運行。訪問控制允許來源隨機發生

我在服務器上發出多個jquery ajax請求來獲取json數據並使用這些數據加載圖形。

問題是,在一個隨機的方式,我得到一個訪問控制允許來源錯誤。我讀了很多關於訪問控制允許來源,並修改了服務器的頭球迴應是這樣的:

Response.ok(Engine.executeQuery(identifier, queryParameters)) 
       .header("Access-Control-Allow-Origin", "*") 
       .header("Access-Control-Allow-Methods","GET, POST, OPTIONS") 
       .header("Access-Control-Allow-Credentials","true") 
       .header("Access-Control-Allow-Headers","Content-Type, *") 
       .build(); 

我的Ajax調用是由這種方式:

$.ajax({ 
     url: obj.url, 
     dataType: 'json', 
     crossDomain:true, 
     success: function (data){ 
      // load graph 
     } 

我已經10 Ajax調用,都完全相同的方式,在相同的目標網址。

問題是,當我加載頁面(並執行ajax調用)時,一些ajax調用有效,有些不。如果我刷新頁面,則可以使用不同數量的調用。這看起來對我來說是隨機的。

我還注意到,如果我指定ajax調用async:false,錯誤永遠不會被觸發。當然,我需要這些調用是異步的(它本來就太簡單了)。

我看到很多關於這個錯誤的帖子,我以爲我知道它的一切。

任何幫助,歡迎。提前致謝。

+0

打開開發者控制檯,在網絡選項卡中檢查所有ajax url的標題是否包含cors標頭。如果沒有,那麼你有服務器問題,而不是在客戶端。 –

+0

我剛剛檢查過,我猜接受:\ */\ *表示沒問題吧?所以我遇到了服務器端的問題? – EoiFirst

+0

你應該有「Access-Control-Allow-Origin」這個標題,「Accept」標題用於不同的目的。請檢查你的服務器端允許源標頭沒有爲所有請求設置,所以你得到的錯誤 –

回答

1

問題已解決。我重構了服務器,它工作得很好。 看來,這是一個線程問題,不夠安全。

感謝您的幫助。