2012-11-08 21 views
6

Etki alanları arası istekte bulunmaya çalışıyorum ve sunucum şu başlıkları gönderecek şekilde yapılandırıldı:OPSİYONLAR 405 (Yönteme İzin Verilmiyor) bağımsız sunucu Access-Control-Allow-Yöntemleri gönderir: OPTIONS, GET, HEAD, POST

Access-Control-Allow-Credentials:true 
Access-Control-Allow-Headers:x-requested-with, Authorization 
Access-Control-Allow-Methods:OPTIONS, GET, HEAD, POST 
Access-Control-Allow-Origin:* 

Ancak bir OPTION isteği yapıldığında, OPTIONS 405 (Method Not Allowed) hatası alıyorum.

Herhangi bir Fikir sorun nedir ve nasıl düzeltilir?

+0

Olası yinelenen [? Access-Control-Allow-Origin Çoklu Kökeni Alanlar] (http://stackoverflow.com/questions: asp klasik kullanılıyorsa, o Web.config dosyasına aşağıdaki satırları ekleyerek anlamına gelecektir/1653308/access-control-allow-origin-multiple-origin-domain) – kenorb

cevap

6

Web sunucunuz/uygulamanız, her HTTP GET fiili ve POST fiil istekleri için belirtilen yanıt üstbilgisini gönderecek şekilde yapılandırılmış olabilir. Ancak, web sunucunuz HTTP OPTIONS Verb işlemek için yapılandırılmış mı?

Daha fazla ayrıntıya ihtiyacınız varsa, lütfen kullandığınız web sunucusu ve uygulama programlama teknolojisini sağlayın.

Bazı özel istek başlıklarına sahip bir çapraz etki alanı isteğiniz olduğunda, tarayıcılar, bir OPTIONS İsteği gönderir. Bu istek asıl talep edilmeden önce yapılır. Tarayıcı, yalnızca bu istek, bahsettiğiniz yanıt üstbilgisiyle geri gelirse gerçek talebi yapar. Eğer sizi WebAPI kullanıyorsanız

1): -

// Bu SEÇENEKLER isteği denir uçuş öncesi istekler genellikle dev araçları

+1

Yorumunuz için teşekkürler. Sunucu IIS 7'dir. OPTIONS işlemek için nasıl yapılandırabilirim? –

+0

İyi bir yön gibi görünüyor. "HTTP Seçenekleri" fiilinin nasıl işleneceği hakkında tavsiye edilen bir link verebilir misiniz? – Blaise

+1

@Belis Seçenekleri işlemek için en kısa açıklama http://stackoverflow.com/a/13646169/570239 adresinde açıklanmıştır - web api <2 ve asp.net mvc ile ilgili daha fazla bilgi için bu http: // www adresine bakın. .codeguru.com/csharp/.net/net_asp/kaynak-kaynak-kaynak-paylaşım-cors-in-asp.net-web-api.html kullanarak. Web api 2 için http://www.asp.net/web-api/overview/security/enabling-cross-origin-requests-in-web-api – humblelistener

7

ben 2 çözümleri öneririm kendi ağ tab.f onları takip yok tarayıcılar unde denemek WebAPI kullanarak

public class XXXController : ApiController 
{ 
    // OPTION http-verb handler 
    public string OptionsXXX() 
    { 
     return null; // HTTP 200 response with empty body 
    } 

    ... 
} 

2) Eğer varsa değil: kongre tarafından gibi görünmelidir seçenek yöntemi uygulamak gerek Kodunuzun hangi bölümünü OPTION çağrısı için OPTIONS 405 (Method Not Allowed) hata tetikler. Bu durumda ben Web.config dosyası çalışır bu <customHeaders/> eklemek için çalışıyor olmadığını kontrol ediyorum:

<configuration> 
    <system.webServer> 
    <httpProtocol> 
     <customHeaders> 
     <!-- CORS temporary solution --> 
     <add name="Access-Control-Allow-Origin" value="*" /> 
     <add name="Access-Control-Allow-Headers" value="Content-Type, Authorization, Accept, X-Requested-With" /> 
     <add name="Access-Control-Allow-Methods" value="OPTIONS, TRACE, GET, HEAD, POST, PUT" /> 
     </customHeaders> 
    </httpProtocol> 
    </system.webServer> 
</configuration> 
+0

Üzgünüm ama bu sorunu düzeltemiyorum. Soruna başka bir şey olmalı. – Blaise

1

Varsayılan OPTIONSVerbHandler değiştirmek gerekir.

<handlers> 
     <remove name="OPTIONSVerbHandler" /> 
     <add name="OPTIONSVerbHandler" path="*" verb="OPTIONS" modules="IsapiModule" scriptProcessor="C:\Windows\System32\inetsrv\asp.dll" resourceType="Unspecified" requireAccess="None" /> 
    </handlers> 
İlgili konular