Apache:如何同时使用PHP和NodeJS

时间:2019-04-04 10:13:46

标签: node.js apache

我有一个PHP网站https://example.com。 我有一个MEAN堆栈应用程序子域http://team.example.com。它使用nodejs在端口3000上提供的API。

在无法访问Nodejs API的http://team.example.com上运行应用程序时,我遇到了问题。

在Apache Config File中添加了以下内容:

ProxyPass / node / http://localhost:3000/

我正在从Angular端发送具有以下内容的api请求:

team.example.com/node/users/login

API通过邮递员成功到达,但在浏览器上失败

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:0)

我认为您遇到了CORS问题,我假设您在节点服务中使用快速框架。 请参阅以下示例代码,以了解如何解决浏览器的CORS问题。

var http = require('http');
var express = require('express');
var app = express();

app.use(function(req, res, next) {
  res.header('Access-Control-Allow-Origin', "*");
  res.header('Access-Control-Allow-Methods','GET,PUT,POST,DELETE,OPTIONS'); 
  res.header('Access-Control-Allow-Headers', 'Content-Type'); 
  next();
});

app.post('/test-cors', function (req, res) {
  res.set('Content-Type', 'application/json');
  res.send(JSON.stringify({ 'status': "OK" }));
});

// Create http server and run it
var server = http.createServer(app);

server.listen(8081, function() {
    console.log("Listening on 8081");
});

在上面的示例代码中,您需要关注以下代码行:

app.use(function(req, res, next) {
  res.header('Access-Control-Allow-Origin', "*");
  res.header('Access-Control-Allow-Methods','GET,PUT,POST,DELETE'); 
  res.header('Access-Control-Allow-Headers', 'Content-Type'); 
  next();
});

答案 1 :(得分:0)

  

Blockquote

要使用代理,您必须在apache中启用代理模块。之后,重新启动apache。

如果您使用的是ubuntu os,请运行以下命令

  

sudo a2enmod代理&&   sudo a2enmod proxy_http

此后,您必须运行

  

sudo服务apach2重新启动。