Node express 服务器,CORS API 限制,包括我的开发机器的 hosts 文件中的一个条目

Posted

技术标签:

【中文标题】Node express 服务器,CORS API 限制,包括我的开发机器的 hosts 文件中的一个条目【英文标题】:Node express server, CORS API restriction, including an entry in my development machine’s hosts file 【发布时间】:2015-06-03 23:16:28 【问题描述】:

我正在尝试使用具有不支持来自任何域的浏览器请求的 API CORS 策略的 API。为了允许客户端 javascript 代码访问 API,在开发我的应用程序时,我被建议从 '*.thisCompany.com' 域提供我的 webapp。 建议在我的开发机器的主机文件中包含一个条目,如下所示,我已经这样做了:

$ echo '127.0.0.1 localhost.thisCompany.com' >> /etc/hosts

当我运行sudo nano /private/etc/hosts 时遵循这个命令 这是我看到的屏幕。

Host Database

localhost is used to configure the loopback interface
when the system is booting.  Do not change this entry.
127.0.0.1       localhost
127.0.0.1       localhost.thisCompany.com

然后有人告诉我,我应该可以通过http://localhost.thisCompany.com 访问我的网络应用程序。

我使用 node express 作为我的服务器,我的 server.js 文件中的代码如下所示

var express = require('express');
var server = express();
var path = require('path');

var port = process.env.PORT || 'thisCompany.com';

server.use(express.static(__dirname + '/public'));
server.use('/bower_components', express.static(__dirname + '/bower_components'));

  server.get('/', function(request, response) 
    response.sendFile(path.join(__dirname + '/views/index.html'));
  );

  server.listen(port, function() 
    console.log("Node app is running at localhost:" + port)
  );

谁能建议我应该遵循哪些步骤才能调用此 API 并绕过 API CORS 政策?

我已经阅读了这里的各种其他帖子,以及其他在线文章,但是我找不到解决方案。真的希望有人能提供帮助。

谢谢,保罗

【问题讨论】:

也许我误读了 Express 文档,但 listen 的第一个参数不需要是端口号吗?目前它是字符串'thisCompany.com'(除非设置了process.env.PORT),这肯定不是TCP端口。 你是对的,我在 3000 时拥有它,它运行良好,但是因为我希望我的快速服务器加载“localhost.thisCompany.com”,这是我尝试解决方案之一,尽管是一个糟糕的解决方案. 【参考方案1】:

我误解了在本地计算机上修改主机文件后,我应该如何在本地查看页面。我不需要向我的快递服务器添加任何东西。快递服务器代码保持如下:

var express = require('express');
var server = express();
var path = require('path');

var port = process.env.PORT || 3000;

server.use(express.static(__dirname + '/public'));
server.use('/bower_components', express.static(__dirname + '/bower_components'));

  server.get('/', function(request, response) 
    response.sendFile(path.join(__dirname + '/views/index.html'));
  );

  server.listen(port, function() 
    console.log("Node app is running at localhost:" + port)
  );

将原始帖子中提到的行添加到本地计算机上的 hosts 文件后,我需要启动我的服务器并通过此链接访问该页面。

http://localhost.thisCompany.com:3000/

虽然这是一个非常小众的问题,但我希望这篇文章对未来的人有所帮助。

【讨论】:

以上是关于Node express 服务器,CORS API 限制,包括我的开发机器的 hosts 文件中的一个条目的主要内容,如果未能解决你的问题,请参考以下文章

Node express 服务器,CORS API 限制,包括我的开发机器的 hosts 文件中的一个条目

在使用 node.js 和 Express 构建的 api 中使用 cors 中间件时出现 CORS 错误

Safari 阻止对 Express API 的 CORS 请求

Node.js---使用Express写接口

在带有 Node 和 Express 的 IE10 中使用 CORS 的安全错误

Node.JS OvernightJS Express CORS XMLHttpRequest 已被 CORS 策略阻止