同一域上的Localhost NodeJS和PHP

时间:2015-09-23 09:20:49

标签: php node.js apache symfony localhost

我正在 www.foo.com 上使用 NodeJS 在本地开发项目,并希望在上调用 PHP 应用subdomain.foo.com

它可以工作,但它被解释为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 个答案:

答案 0 :(得分:1)

这是一个跨站点的XMLHttpRequests问题,所以解决方案不是真的在PHP领域,而是在Apache本身。

您可以通过添加以下行来执行此操作:

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

到PHP站点配置的<Directory>部分。这将允许来自任何地方的跨站点XHR请求。

或者你可以改进并说:

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

如果您只想要来自主域名的请求