2011-09-07 90 views
1

i'm發射了AJAX/JSONP請求到我cloudant應用程式:JS警告:資源解釋爲腳本,但與MIME類型文本傳送/純

var obj = $.ajax({ 
     url: "http://xyz", 
     dataType: 'jsonp', 
     success: function(data) { 
      //SOME CODE 
     }, 
     error: function() { 
      //SOME CODE 
     } 
    }); 

的響應是確定,我可以讀出我的數據。 但I'm得到以下JS警告:

Resource interpreted as Script but transferred with MIME type text/plain. 

我需要提出這個要求的JSONP請求(跨域策略),據我所知JSONP收益爲腳本,並得到由 瀏覽器執行。 我必須設置請求標頭嗎? 我用'接受'和'轉換器'選項嘗試過,但沒有使它工作。 (I'm使用GoogleChrome,而且還發生在Safari瀏覽器/ FF)

歡呼聲, 湯姆

PS:我想擺脫的警告,因爲這Ajax請求被每2秒觸發。所以控制檯看起來很糟糕......

+0

可能的重複:** [Chrome說:「資源解釋爲腳本,但使用MIME類型text/plain傳輸。」,什麼給出?](http://stackoverflow.com/questions/3467404/chrome-says-resource - 解釋爲腳本,但轉讓與MIME類型文本)** – hippietrail

回答

4

當它發出的JSONP腳本的服務器應該發送Content-Type頭設置爲text/javascript

+0

謝謝。但它在雲端,它總是發送「文本/純文本」。我無法更改內容類型。是否也可以在客戶端上接受不同的內容類型?或者是否有人知道是否有可能在cloudant上改變它? – tom81

+1

如果您將這個漏洞報告給雲計算開發人員,您會爲很多人提供幫助。這可能是最好的服務,等待他們的修復。 – Jacob

+0

好的。我去做。謝謝 – tom81

0

問題是在目標服務器上,因爲它的設置Content-Type: Text/plain

你不能強制執行不訪問目標服務器。它應該是Content-Type: text/javascript

+0

你知道雲計算可能嗎? – tom81

+0

@ tom81:它取決於後端代碼,而不是數據庫 – genesis

1

CouchDB本身正在發送文本/純文本內容類型。如果您發送'Accept:application/json'作爲標題,唯一可以說服它發送的其他類型是'application/json'。

雖然,看起來CouchDB應該發送文本/ JavaScript,如果提供jsonp響應。如果你可以提交票據,我相信它會完成。

+0

,因爲這是核心CouchDB中的問題,因此引發了https://issues.apache.org/jira/browse/COUCHDB-1274。可能在早上解決它。 –

+0

聽起來不錯。謝謝。 – tom81

0

您是否在標頭中發送任何編碼信息?我遇到了CouchDB響應問題,並發現將charset=utf-8添加到我的AcceptContent-Type標題導致CouchDB返回text/plain內容而不是我期待的application/json。也許你可以通過改變你的頭來解決這個問題,如果案例足夠相似。

相關問題