2015-09-23 3 views
2

Я занимаюсь разработкой проекта на местном уровне с NodeJS на www.foo.com и хочу вызвать PHP приложения на subdomain.foo.com.Localhost NodeJS и PHP на одном домене

Он работает, но он интерпретируется как CROSS-ORIGIN, поэтому он отправляет запросы OPTIONS, и я не могу получить порожденную ошибку из PHP в средстве разработки сетевого браузера.

Мои хозяева

127.0.0.1 foo.com 
127.0.0.1 subdomain.foo.com 

Apache

// foo.com 
<VirtualHost *:80> 
    ServerName foo.com 
    DocumentRoot "/path/to/my/nodejs/app" 
    <Location /> 
    ProxyPass http://127.0.0.1:8080/ 
    ProxyPassReverse http://127.0.0.1:8080/ 
    </Location> 
</VirtualHost> 

// Symfony2 project on: subdomain.foo.com 
<VirtualHost *:80> 
ServerName subdomain.foo.com 
DocumentRoot "/path/to/my/php/app" 
<Directory /path/to/my/php/app> 
    Options Indexes FollowSymLinks MultiViews 
    AllowOverride None 
    Order allow,deny 
    allow from all 
    <IfModule mod_rewrite.c> 
     RewriteEngine On 
     RewriteCond %{REQUEST_FILENAME} !-f 
     RewriteRule ^(.*)$ /app_dev.php [QSA,L] 
    </IfModule> 
</Directory> 
    ErrorLog ${APACHE_LOG_DIR}/error.log 
    LogLevel warn 
    ErrorLog "/Applications/MAMP/logs/subdomain-foo-error.log" 
    CustomLog "/Applications/MAMP/logs/subdomain-foo-access.log" common 
</VirtualHost> 

Любая идея?

ответ

1

Это проблема XMLHttpRequests для межсайтовых сайтов, поэтому решение на самом деле не на PHP, а в самом Apache.

Вы можете сделать это, добавив строку:

Header set Access-Control-Allow-Origin "*" 

в <Directory> разделе конфигурации PHP сайта. Это позволит выполнять запросы XHR на разных площадках из любого места.

Или вы можете уточнить и сказать:

Header set Access-Control-Allow-Origin "foo.com" 

если вы хотите только запросы от основного домена

+0

Я понимаю, но я не хочу иметь проблемы кросс-сайт, я хочу имеют оба приложения в одном домене. Он работает на моем сервере, но не локально. Кажется, что NodeJS остается на localhost: port, а не foo.com! –

+0

Они находятся в том же домене, но не в том же _subdomain_. Кросс-домен точно подобен межсайтовой. Если это работает на вашем сервере, но не локально, конфигурация Apache вашего сервера разрешима и устанавливает заголовок для всех виртуальных хостов, тогда как в вашей локальной конфигурации нет. – tchap