2014-08-29 39 views
5

Nginx ve yelkenleri kullanarak çapraz etki alanı yapılandırma sorunları yaşıyorum. Sorun, http://domain-server.com/socket.io/ aracılığıyla düzgün bir şekilde bağlanacak sokete sahip olursam ise RESTful isteği başarısız olur. RESTful çalışırsa soket olmaz.etki alanı yapılandırma sorunları

Ayar

Müşteri http://domain.com

Sunucu http://server-domain.com

Müşteri "sails.io.js": "0.10.3" ve bu yapılandırma io.sails.url = 'http://domain-server.com'; kullanılarak açısal bir uygulamadır.

Sunucu, RESTful isteği ve yuva özelliklerine sahip bir yelken uygulamasıdır.

dışarı Yorumlananlar

Yelkenler CORS yapılandırma

module.exports.cors = { 
    allRoutes: true, 
    origin: 'http://domain.com', 
    credentials: true, 
    methods: 'GET, POST, PUT, DELETE, OPTIONS, HEAD', 
    headers: 'content-type,Access-Control-Allow-Origin' 
}; 

Yelkenler soket yapılandırma

module.exports.socket { 
    onConnect: function() {}, 
    onDisconnect: function() {}, 
    authorization: false, 
    'backwardsCompatibilityFor0.9SocketClients': false, 
    grant3rdPartyCookie: true, 
    origins: 'http://domain.com' 
}; 

nginx yapılandırma ben olmadan nginx yapılandırmasında oynadım ettik nelerdir çok başarı (ayrıca t istemci adresi yerine *) kullanıldı. Dinlendirici yapma

server { 
    listen 80; 

    server_name domain-server.com; 
#add_header Access-Control-Allow-Origin *; 
    location/{ 
#  add_header Access-Control-Allow-Origin *; 

     proxy_pass http://localhost:1337; 
     proxy_http_version 1.1; 
     proxy_set_header Upgrade $http_upgrade; 
     proxy_set_header Connection 'upgrade'; 
     proxy_set_header Host $host; 
#  proxy_set_header Access-Control-Allow-Origin *; 
     proxy_cache_bypass $http_upgrade; 
    } 
} 

angularjs hizmet metodu açısal yapılandırma fonksiyonu burada

$httpProvider.defaults.useXDomain = true; 

Mevcut yapılandırma ve de

function query(path, attributes) { 

    return $http({ 
     url: domain + path, 
     params: attributes, 
     method: "GET", 
     widthCredentials: true 
    }); 
} 

çağrıları sonuç ben yaşıyorum edilir .

Tarayıcı konsol çıkış

Resource interpreted as Script but transferred with MIME type text/html: "http://domain-server.com/__getcookie". - İyi

|>
\___/ sails.io.js:200 io.socket connected successfully.
- İyi

XMLHttpRequest cannot load http://domain-server.com/login?password=test&username=test. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://domain.com' is therefore not allowed access. - İyi değil

GÜNCELLEME

görünüyor Her şey gibi çalışırsa, sails lift veya node app.js'u kullanarak doğrudan yelken açmaya başladığım halde, bir .conf dosyasında en yeni başlatma komut dosyasını kullanarak başladığınızda çapraz etki alanı sorunu oluşur.

sonradan görme komut

#!upstart 
description "demo" 
author "gillesc" 

start on (local-filesystems and net-device-up IFACE=eth0) 
stop on shutdown 

respawn 
respawn limit 5 60 

script 
    exec /usr/bin/node /var/www/apps/domain-server.com/app.js > /var/www/apps/domain-server.com/server.log 2>&1 
end script 
+0

Bu nerede barındırılıyor? Bazı bulut ana bilgisayarları (OpenStack gibi) CORS başlıklarının gönderilmesini engelliyor gibi görünüyor. – sgress454

+0

CORS'in RESTful için gayet iyi çalışmasını sağlayabilirim, sadece bir şey yapmazlar. Bir yerde bir çatışma olduğu gibi görünüyor. – GillesC

+0

Tarayıcıda 'http: //domain-server.com/login? Password = test & username = test' öğesine giderseniz ne yaparsınız? Bir nginx hata sayfası mı? Nginx'ten yelken uygulamasına doğru proxy isteklerini tersine mi uyguluyorsunuz? Yoksa farklı limanlarda mılar? – david

cevap

1

deneyin sizin Yelken uygulamanın app.js üstüne dosyasını aşağıdaki ekleyerek: not found görüyorsanız muhtemelen varsayılan

process.chdir(__dirname); 

Express 404 mesajı. Bir Sails uygulamasını kendi dizininin dışında kaldırmaya çalışırsanız, API dosyaları (ör. Kontrolörler) düzgün yüklenmez. Bu sorunu önlemek için process.chdir varsayılan app.js uygulamasına eklenmiştir, ancak yol boyunca bir yerde bir gerileme olduğu anlaşılmaktadır.

İlgili konular