IE'yi indirmek için teklif yerine uygulama / json'u görüntülemeye nasıl ikna edebilirim?


161

AJAX kullanan jQuery uygulamalarında hata ayıklarken, genellikle servis tarafından tarayıcıya döndürülen json'u görmem gerekiyor. Bu yüzden JSON verilerinin URL'sini adres çubuğuna bırakacağım.

Bu ASPNET ile güzel çünkü bir kodlama hatası durumunda, ASPNET diagostic'i tarayıcıda görebiliyorum:

alternatif metin

Ancak sunucu tarafı kodu düzgün çalıştığında ve aslında JSON döndürdüğünde, IE bunu indirmemi ister, bu yüzden yanıtı göremiyorum.

alternatif metin

IE, bunu düz metinmiş gibi görüntülemek için YAPMAM, başka bir deyişle alabilir miyim?

Content-Type başlığını şu şekilde ayarlarsam bunu yapabileceğimi biliyorum text/plain.

Ancak bu, eylem yöntemlerimden birinde JsonResult kullandığımda yanıtı otomatik olarak ayarlayan bir ASPNET MVC uygulamasının bağlamıdır. Ayrıca uygun içerik türünü korumak ve sadece hata ayıklama çabalarını desteklemek için değiştirmek istemiyorum.


Güncellenmemiş bir makineniz varsa, Firefox 3/4 de bunu yapar.
Chris S

8
Ben "ikna" kullanımını seviyorum !!
adardesign

Yanıtlar:


234

Cevabı buldum.

Kayıt defterini güncelleyerek IE8'i tarayıcı penceresinde application / json görüntüleyecek şekilde yapılandırabilirsiniz. Harici bir alete gerek yoktur. Bunu geniş çapta test etmedim, ancak Vista'da IE8 ile çalışıyor.

Bunu kullanmak için, kayıt defterini güncelleştirme ile ilgili tüm genel uyarılar geçerlidir. IE'yi durdurun. Ardından aşağıdakileri kesin ve bir dosyaya adıyla yapıştırın json-ie.reg.

Windows Registry Editor Version 5.00
;
; Tell IE to open JSON documents in the browser.  
; 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" .
;  

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

Sonra .reg dosyasını çift tıklatın. IE'yi yeniden başlatın. Bir dokümanı döndüren Content-Type: application/jsonveya Content-Type: text/jsonaşağıdaki gibi bir URL'yi işaretlerken aldığınız yeni davranış :

alternatif metin

Ne işe yarıyor, neden çalışıyor:

25336920-03F9-11cf-8FD0-00AA00686F13"Göz yerinde" eylem için CLSID olduğunu. Temelde bu kayıt defteri girdisi IE'ye mime türü application / json olan dokümanlar için sadece yerinde görüntülediğini söyler. Bu, <script>etiketler veya XHR vb. Yoluyla indirilen hiçbir uygulama / json belgesini etkilemez .

CLSID ve Kodlama tuşları için kullanılan aynı değerler elde image/gif, image/jpegve text/html.

Bu ipucu bu siteden ve Microsoft'un Internet Explorer'da MIME Türlerini Kullanma makalesinden geldi .


FF'de harici bir eklentiye de ihtiyacınız yoktur. Sadece view-source:sözde protokolü kullanabilirsiniz. Adres çubuğuna böyle bir URL girin:

view-source:http://myserver/MyUrl/That/emits/Application/json

Bu sahte protokol, Microsoft güvenlik nedenleriyle devre dışı bırakılıncaya kadar, IE'de de WinXP-sp2'ye kadar destekleniyordu.


13
Kayıt defteri dosyasını oluşturmayı atlamak istiyorsanız, burada bir powershell penceresine yapıştırabileceğiniz bir astar:reg add "HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json" /t REG_SZ /d "{25336920-03F9-11cf-8FD0-00AA00686F13}"; reg add "HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json" /v Encoding /t REG_DWORD /d 0x08000000
Jason R. Coombs

2
@nathanvda, dünyanın en büyük kısmına herhangi bir şey sormaya gerek yok. Tarayıcıda JSON gösterilmesi, AJAX sayfasının geliştiricisinin yapmak isteyeceği bir şeydir. Normal kullanıcılar için tarayıcıda JSON görüntülemek tamamen gereksizdir.
Cheeso

3
Bir arkadaşımın kutumu ödünç almasına izin verme gibi ölümcül bir hata yaptım ve bu düzeltmeyi yaptı. Onları tersine çevirebilmem için orijinal ayarların ne olduğunu bilen var mı?
KevDog

7
@Mosh, bu yukarıda nathanvda tarafından belirtildi, çözüm, web sitesi kullanıcılarının JSON görüntüleyebilmesi için değil, sadece bir hata ayıklama amaçlıdır. Sorunun tamamını okuyun.
Anthony Shaw

2
Bu hala 8.1 kazanmak için IE11'de çalışıyor. Tarayıcıyı yeniden başlatmanıza bile gerek yoktu. Benim durumumda text/jsonanahtara ihtiyacım vardı .
Chris

15

Benzer bir sorun yaşadım. "$. GetJSON" jQuery kullanıyordum ve her şey Firefox ve Chrome'da mükemmel çalıştı.

Ancak IE'de çalışmadı. Bu yüzden json'un URL'sine doğrudan erişmeye çalıştım, ancak IE'de dosyayı indirmek isteyip istemediğim sordu.

Çok fazla arama yaptıktan sonra sonuçta bir içerik türü ile bir başlık olması gerektiğini gördüm, benim durumumda içerik türü:

header("Content-type: text/html; charset=iso-8859-1");

Ancak, istekte bulunan sayfa bu json'u aldığında, IE'de, benim durumumda AYNI İÇERİK TÜRÜ belirtmeniz gerekir:

$.getJSON (
"<? site_url php echo (" ajax / tipoMenu ")?>"
{contentType: 'text / html; charset = utf-8'},
function (result) {

sarılmalar


Bu benim için çalıştı, kayıt defteri ile hiçbir karışıklık gerekli, sadece yanıt başlığını değiştirmek çok "text / html".
64k

2
Bir Ajax çağrısı yaparken IE7'de bu nasıl çalışır ve sonuç olarak json alır? GetJSON değil, bir .ajax çağrısı kullanıyorum. Bu içerik türünü yanıt ve başlık olarak kullandım ve hiç yardımcı olmuyor. İkisi de json2.js kullanmadı. Bunun ie7'de çalışan başarılı uygulamaları var mı? IE7, kullanıcılarımızın% 30'undan fazlasını temsil etmektedir. Üzücü ama gerçek ve reg tuşu değişikliği bir seçenek değil. Bir milyon hükümet kullanıcısına sadece bir saldırı düzenlemesini söylemek, uçmayacak.
CD Smith

Bunun eski bir soru olduğunu biliyorum, ama tekrarlanıyor, bu yüzden cevap: Orijinal soru JSON alımını hata ayıklayan GELİŞTİRİCİLER ile ilgilidir. Reg'in değiştirilmesi, bu geliştiricilere yardımcı olacak bir adım olarak önerilmektedir. Kayıt defterini modyfing genel kullanıcılar için önerilmez veya önerilmez. Ayrıca: tarayıcıda JSON'u görüntülemek için ASLA normal kullanıcılara (= bir milyon devlet kullanıcısına) ihtiyaç yoktur.
Cheeso

Sadece kullan text/plain; charset=UTF-8. / Html yazmanıza gerek yok.
perryflynn

13

Yukarıdaki çözüm eksik bir şeydi ve aşağıdaki kod her durumda çalışmalıdır:

Windows Registry Editor Version 5.00
;
; Tell IE to open JSON documents in the browser.  
; 25336920-03F9-11cf-8FD0-00AA00686F13 is the CLSID for the "Browse in place" .
;  

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\application/x-json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

[HKEY_CLASSES_ROOT\MIME\Database\Content Type\text/json]
"CLSID"="{25336920-03F9-11cf-8FD0-00AA00686F13}"
"Encoding"=hex:08,00,00,00

Sadece json.reg dosyasını kaydedin ve kayıt defterinizi değiştirmek için çalıştırın.


İş bilgisayarım kilitli. Bunları eklemek için komut satırına ihtiyacınız varsa, bu cevaba bakın. stackoverflow.com/questions/13809856/… Teşekkürler OP. IE'de json görüyorum ........ yay!
granadaCoder

2

IE'nin JSON'u bir not defterine açması konusunda sorun yoksa, .json dosyaları için sisteminizin varsayılan programını Not Defteri olarak değiştirebilirsiniz.

Bunu yapmak için, bir .json dosyası oluşturun veya bulun, sağ tıklayın ve "Birlikte Aç" veya "Varsayılan Programı Seç" i seçin.

Tesadüfen Internet Explorer kullanmak istiyorsanız, ancak BT şirketiniz kayıt defterinizi düzenlemenize izin vermiyorsa bu kullanışlı olabilir. Aksi takdirde, yukarıdaki cevapları tavsiye ederim.



1

IE'nin JSON mime tipi ayarlarını değiştirmek, IE'nin tüm JSON yanıtlarını işleme biçimini etkiler .

Mime tipi üstbilgiyi text / html olarak değiştirmek, herhangi bir tarayıcıya, döndürdüğünüz JSON yanıtının JSON değil düz metin olduğunu etkili bir şekilde söyler.

Her iki seçenek de tercih edilmez.

Bunun yerine, yukarıda belirtilen Fiddler gibi herhangi bir eklenti veya araç veya JSON yanıtının nasıl işleneceğini her seferinde seçebileceğiniz başka bir ağ trafiği denetleyicisi proxy'si kullanmak istersiniz.


2
text/htmltarayıcıya yanıtın düz metin değil HTML olduğunu söyler. Düz metin istemeye karar verirseniz kullanın text/plain. Aksi takdirde bazı ilginç XSS güvenlik açıklarıyla karşılaşabilirsiniz.
Michael Mior

0

FireFox + FireBug bu amaç için çok iyidir. IE için daha önce hiç kullanmadığım ve kullanmak istediğim bir geliştirici araç çubuğu var, bu yüzden fazla geri bildirim sağlayamıyorum.


Evet, normal metin olarak application / json'ın görüntülenmesini sağlayan FF eklentisini biliyorum. Özellikle IE hakkında bilmek istiyorum.
Mart'ta Cheeso

IE için bir geliştirici araç çubuğu var. Bu arada, geliştiriciler için farklı araçların güzel bir karşılaştırması: elegantcode.com/2009/05/18/…
Darin Dimitrov

0

Sadece XMLHttpRequest ile aynı sorunu yaşadım. Site, Chrome ve FF'de ve üretimde düzinelerce Internet Explorer tarayıcısında kusursuz bir şekilde çalışıyor. Bu ONE makinesi (şirketimizin elbette bir demo makinesi olarak kurduğu makine), bir ajax talebine json yanıtını kaydetmeye karar vereceğine karar verdi.

Aşağıdaki kabul edilen regedit çözümü sorunu çözdü. Teşekkürler.


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.