2014-10-01 16 views
5

Bu sorun, zaten bir düzine kez stackoverflow belirtilen, ancak farklı bir sorun var.Chrome 'Erişim-Denetim-İzin-Kökeni' üstbilgisi yok, ancak üstbilgi var

Chrome, önce üstbilgileri almak için bir "OPTIONS" çağrısı yapar. Gördüğünüz gibi, doğru üstbilgiler var.

enter image description here

Nedense, Krom başlığını fark etmez ve aynı şekilde fiili isteğini iptal o olur başlık hiç orada olmasaydı.

enter image description here

sayfa aslında üç aramaları ve merakla, bunlardan biri çalışır hale getirir. başlık gerçekten varken

enter image description here

Yani soru, neden Chrome tarafından saygı duymayan mı? Hata ayıklamak için ne yapabilirim?

Güncelleme

Ben Access-Control-Allow-Methods şimdi SEÇENEKLERİ gelen başlık yanıt aramak bu yanıt başlıklarını içerir ekleme çalıştı:

Access-Control-Allow-Headers:Origin, X-Requested-With, Content-Type, Accept 
Access-Control-Allow-Methods:POST, GET, OPTIONS 
Access-Control-Allow-Origin:* 

sonuç aynıdır. (Global.asax.cs Application_BeginRequest) Her istek üzerine serverside başlıklarını ayarlamak

sunucu tarafında başlıklarını ayarlama

Response.Headers.Add("Access-Control-Allow-Origin", "*"); 
Response.Headers.Add("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept"); 
Response.Headers.Add("Access-Control-Allow-Methods", "POST, GET, OPTIONS"); 

Fiddler

yaptığımız araştırma sonrasında

Ham istek ve yanıtı inceledim ve şaşırtıcı bir şey buldum: Hata, uygulamadan basit bir HTTP 500 hatasıdır. ication. Bunun nedeni, HTTP 500 hatasının sağ üstbilgileri içermemesi nedeniyle Chrome, döndürülen hatayı göstermez, bunun yerine üstbilgiyle ilgili hatayı gösterir.

Cevap

Yani sonuç olarak, Krom verirse aslında bir HTTP 500 hatası örtbas olabilir No 'Access-Control-Allow-Origin' header söylüyor. Bu, Fiddler'da istek ve yanıt kontrol edilerek belirlenebilir.

+0

Ve kod ... kod nerede? – Hackerman

+1

Ayrıca bir "Access-Control-Allow-Methods" başlığı da olmalıdır. Ekran görüntüsünde göremiyorum. – monsur

+0

@RobertRozas Teşekkürler. Bu sorun, Chrome'un neden olduğu gibi davranmasıyla ilgilidir. Bu nedenle, anlamaya çalıştığım konudan odaklanabilecek kodları eklememeye çalışıyorum. Ancak ihtiyaç duyulduğunda ham istekleri/yanıtları gönderebilir miyim? –

cevap

2

Chrome, No 'Access-Control-Allow-Origin' header diyorsa, gerçekten bir HTTP 500 hatası içerebilir. Bu, Fiddler'da istek ve yanıt kontrol edilerek belirlenebilir.

+0

BU. Bir tarayıcı, 500’te ne yaparsa yapabilir mi? – enpenax

İlgili konular