我有一个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通过邮递员成功到达,但在浏览器上失败
我该如何解决这个问题?
答案 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重新启动。