所以我在同一台服务器上运行了2个应用程序。 1.在后端,我有Mean.js,它提供执行CRUD操作的服务。 2.在前端我正在使用提供UI体验的IONIC应用程序。
前端(离子应用程序)在81上运行,后端在3000上运行。
我尝试通过在线查找设置后端(节点/平均值)的反向代理,但没有成功。
这是我的nginx设置
server {
listen 80;
server_name meantodo.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
答案 0 :(得分:1)
只需将标题添加到您的快速应用程序,允许离子服务器ip和端口如下:
app.use(function(req, res, next) {
res.header('Access-Control-Allow-Origin', 'http://yourIonicServerIp:port');
res.header('Access-Control-Allow-Methods', 'POST, GET, PUT, DELETE, OPTIONS');
next();
});
答案 1 :(得分:0)
我对Ionic和mean.js一无所知,但听起来你正在遇到与我相同的事情,React设置了2个站点,其中一个用POST或GET调用另一个站点
首先,您说您的前端站点位于端口81上,但它表示无法在错误中加载http://34.192.250.112/api/properties
。这是80端口的呼叫。并且你说你的后端服务查询是在3000,所以你确定你的操作实际上不在那3000个网站上吗?您需要在:81
之后添加:3000
或112
,如果在某些“GET”中您没有共享。或者也许是因为那个listen 80
而这样做,所以你必须用listen 81
或listen 3000
替换它,以适用于你的api真正的位置。
但假设您在通话中修复了该问题,然后又遇到了类似的错误,那么您需要转到Web服务器上的IIS,假设它是在那里托管的(如果不是在IIS中,我确定有的话) Tomcat中的一个等价的地方或者你要用的任何地方,我要告诉你去的地方)。在您尝试呼叫的网站上,打开 HTTP响应标头功能。添加:
Name: Access-Control-Allow-Origin
Value http://34.192.250.112:81
如果您的请求需要身份验证,则可能需要添加:
Name: Access-Control-Allow-Credentials
Value true
此外,如果这还不够,并且您仍然遇到错误,则可以启用已禁用安全性的Chrome,然后导航到您的网站并执行导致“GET”的操作。在命令提示符下,您执行:
cd C:\Program Files (x86)\Google\Chrome\Application
chrome --disable-web-security --user-data-dir=C:/somefolder
然后导航到您的网站。
答案 2 :(得分:-1)
通过在https://github.com/meanjs/mean/blob/master/config/lib/express.js#L57
上添加以下行来解决此问题var corsOptions = {
origin: 'http://34.192.250.412:80',
optionsSuccessStatus: 200 // some legacy browsers (IE11, various SmartTVs) choke on 204
};
app.use(cors());