簡體   English   中英

IE想下載我的JSON響應; 其他瀏覽器按預期工作

[英]IE wants to download my JSON response; other browsers work as expected

我的搜索使我相信這是為響應設置標題的問題。 此應用程序是使用Zend框架構建的,以下是設置的標頭(此響應包含有關文件上傳的信息):

$response
    ->setHeader('Expires', 'Mon, 26 Jul 1997 05:00:00 GMT')
    ->setHeader('Cache-Control', 'private, no-cache')
    ->setHeader('Pragma', 'no-cache')
    ->setHeader('Content-Disposition', 'inline; filename="files.json"')
    ->setHeader('X-Content-Type-Options', 'nosniff')
    ->setHeader('Content-type', 'application/json; charset=UTF-8');

這是“ files.json”的內容:{“ webpath”:“ http://www.domain.com/avatar/38b/3ef/f8b/a4c62a71.jpg”,“ file_id”:“ 484”,“高度”:250,“寬度”:250}

編輯:我在所有版本的IE(包括IE9)中都遇到此問題。 我也嘗試對Content-type使用'text / plain',但無濟於事。 還將拼寫錯誤固定在“私人”一詞上。

您是否嘗試過將Content-Disposition設置為“內聯”(即刪除'; filename =“ files.json”')?

當我返回json時,我在whateverAction()設置了以下whateverAction()

$this->getResponse()->setHttpResponseCode(200);
$this->getResponse()->setHeader('Content-Type', 'application/json');
$this->getResponse()->setBody($Json());

就是這樣,僅此而已,它可以在所有瀏覽器中使用。 無論如何,我可以測試的所有內容,包括IE 9。

如果瀏覽器要求您下載JSON文檔,則不會出錯。 默認情況下,瀏覽器不顯示內聯內容類型正確的JSON,除非您安裝了某些擴展名(例如Firefox中的JSONView)。

如果您只想查看由腳本創建的JSON,請使用此類擴展名或暫時使用文本內容類型(例如text/plaintext/javascript )。 在其他情況下,則應保留原樣,因為應使用適當的內容類型發送JSON。

標頭告訴IE下載文件。 我會刪除

->setHeader('Content-Disposition', 'inline; filename="files.json"')

因為我認為這會觸發下載。

如果不是這種情況,我將首先刪除所有標頭,然后檢查它們是否都正確編寫(請參閱“專用”),並先進行無標頭測試,然后逐個添加它們,以找出哪個觸發了您的問題。 然后,請寫出哪一個,以便進一步查看。

暫無
暫無

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

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