2011-09-14 18 views
9

çalışmak: yani şöyle görünür kapalı ben jsfiddle çalıştırınAlanları Arası AJAX ön kontrol Bu görünmüyor başarısız Kökeni onay

$.ajax({ 
    url:  "http://localhost:3000/foo.json", 
    data:  { foo: 'bar' }, 
    headers: { 'HTTP_X_CUSTOMHEADER': 'foobar' }, 
    xhrFields: { withCredentials: true } 
}); 

, bir OPTIONS istek (Krom ayıklama araçlarına göre) basar: benim yerel sunucu aşağıdaki başlıkları döndürür (Krom ayıklama araçlarına göre) daha sonra

Access-Control-Request-Headers: Origin, HTTP_X_CUSTOMHEADER, Accept 
Access-Control-Request-Method: GET 
Origin:       http://fiddle.jshell.net 

Ve

:

(elle reada için yeniden

Access-Control-Allow-Credentials: true 
Access-Control-Allow-Headers:  HTTP_X_CUSTOMHEADER 
Access-Control-Allow-Methods:  GET, POST, PUT, DELETE, OPTIONS 
Access-Control-Allow-Origin:  http://fiddle.jshell.net 
Access-Control-Max-Age:   10 

Cache-Control:     no-cache 
Connection:      Keep-Alive 
Content-Length:     1 
Content-Type:      text/html; charset=utf-8 
Date:        Wed, 14 Sep 2011 22:42:28 GMT 
Server:       WEBrick/1.3.1 (Ruby/1.8.7/2010-01-10) 
X-Runtime:      2 

Ve bility) daha sonra konsolda bir hata mesajı bu hale:

XMLHttpRequest cannot load http://localhost:3000/foo.json?foo=bar. 
Origin http://fiddle.jshell.net is not allowed by Access-Control-Allow-Origin. 

Ama Access-Control-Allow-Origin başlık benim sunucu uçuş öncesi isteğine cevap verdi zaman aynı görünür. Peki bu bulmacadan burada hangi parçayı kaçırıyorum?

+0

Giden isteklerin başlıkları nasıl görünüyor? Bir [Origin:] (https://developer.mozilla.org/en/HTTP_access_control) üstbilgisini içermelidirler. Ancak, tarayıcının [her zaman ekleyeceğine inanıyorum] (https://developer.mozilla.org/en/HTTP_access_control#Origin). – daxelrod

+0

Soruyu, seçenekler isteğindeki başlıklar ile güncelledik. –

cevap

4

OHHHHH ok bunu anladım, nihayet ...

Görünüşe uçuş öncesi OPTIONS yanıt başlıkları onlara ihtiyacı tek yer öyle. Bu başlıkların, gerçek içeriğin yanı sıra yanıtına dahil edilmesi gerekir. Sadece bu başlıkların ön fareye düşmesini sağladım, bunun gerekli olan tek “bilet” olduğunu düşünüyorum.

Bu nedenle, aynı üstbilgileri gerçek varlık için GET isteğine ekledim ve her şey şimdi harika çalışıyor. Sanırım dokümanlardakileri özledim.

+2

Daha fazla ayrıntıya girer misiniz? CORS cehennemde kaldım: http://stackoverflow.com/questions/13318436/https-access-control-allow-origin-not-working-no-matter-what-with-php-5-3-apac –

+0

Bu http://stackoverflow.com/questions/41952995/response-status-is-0-in-jquery-ajax?noredirect=1#comment71099392_41952995 ile bana yardımcı olabilir misiniz? – SSS

1

Kökeni basit bir başlık (IMO, basit başlıklar listesinde Kökeni içermelidir) olarak kabul edilmediğinden, Access-Control-Allow-Headers bölümüne Origin eklemeniz gerekir.

+0

"Access-Control-Allow-Headers: HTTP_X_CUSTOMHEADER, Origin, Accept" i içerecek şekilde OPTIONS yanıt başlıklarını değiştirdim ancak hiçbir şey değişmedi. –

İlgili konular