2016-04-08 31 views
0

Bir emberJS uygulamasında bir çalışma sunucusuna (google POSTMAN aracılığıyla kontrol edilir) temel istekte bulunmaya çalışıyorum. Ama denediğimde, http 404 hatası alıyorum. Sonra hatayı inceledim ve müşteri tarafında gelen asıl talebin GET talebi yerine OPTION isteği olarak geldiğini gördüm. Ayrıca, application/json olmak iki başlık, Accept ve Content-Type kurdum ve teftiş sırasında, müfettiş baskılı bu başlıklar:emberJS JSONAPI bağdaştırıcısı, GET isteği yerine OPTION gönderir

Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8 
Access-Control-Request-Headers:accept, content-type 
Access-Control-Request-Method:GET 
Connection:keep-alive 
Host:frontend.com 
Origin:http://localhost:4200 
Referer:http://localhost:4200/restaurant 
User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/49.0.2623.110 Safari/537.36 

Şimdi burada bu çevirmek için bir yol adaptör

//Application.js adapter: 
import DS from 'ember-data'; 

export default DS.JSONAPIadapter.extend({ 
    host: 'http://server.com', 
    namespace: 'v1', 
    headers: { 
     "Accept": "application/json", 
     "Content-Type": "application/json" 
    } 
}); 

var mı olduğunu OPTION kapalı mı yoksa bazı geçici çözüm var mı? Ember'in çok yorucu olduğuna inanmadım, çünkü bu, emberJS'nin yapması gereken şeylerden biri olmalıydı. Herhangi bir yardım belirtildi.

+0

Yorumunuz, Ember'in arabası olduğuna inanıyor mu? Etki alanları arası isteklerin nasıl çalıştığını biliyor musunuz? (İstemci kodunuzun ve "host" özelliğinin farklı ana bilgisayarlar olduğunu varsayarak) –

+1

Bu konu hakkında bilgi edinmek isteyebilirsiniz, (BTW, bunun Ember ile hiçbir ilgisi yoktur, tarayıcıların çalışma şeklidir): https: //developer.mozilla .org/en-US/docs/Web/HTTP/Access_control_CORS –

+1

Dün bu konudan dolayı çok stresliydim, bu yüzden emberin buggy olduğunu düşündüm. CORS'e hiç aşina değildim. Şimdi problemi çözmek için arka taraftaki CORS'e izin vermeye çalışacağım. Teşekkürler :) – xpg94

cevap

1

Bu "önkoşul isteme" dir. Çapraz kaynaklı bir istek yaparken, tarayıcı önce bir OPTION isteği göndererek bir ön kontrol isteği gönderir. OPTION isteğine başarıyla yanıt verilirse, gerçek istek sunucuya gönderilir.

"uçuş öncesi" gibi durumlarda başarısız:

  • CORS
  • kimlik doğrulama/yetkilendirme sorunları oluştu sunucuya
  • hizmet fonksiyonu bulunmazsa (404)
  • hizmet olarak etkin değildir fonksiyon

göndereceğiniz başlığı kabul etmiyorsunuz. Bu anahtar kelimelerle arama yapabilirsiniz: preflight, cors

+0

Veya sunucu, OPTIONS isteğini desteklemiyor olabilir. Kör verilerinde ön kontrol isteğini kapatma hakkında herhangi bir bilgisi var mı? WP-REST-API bunu desteklemiyor gibi görünüyor (inanılmaz derecede) – Epirocks

+0

Bunu kapatamazsınız. Bu tarayıcı tarafından yapılır. – ykaragol

+0

Aslında, Ember veri bağdaştırıcınızda içerik türünü text/plain olarak ayarlayarak tarayıcının bunu yapmasını engelleyebilirsiniz. Sadece geliştirme için bu yüzden OPTIONS'u destekleme noktasını göremiyorum. – Epirocks