自定义NPM模块无法从localhost

问题描述

[更新]

我为自己的nodejs SDK创建了一个 NPM模块

我的SDK用于简化对我开发的服务器的访问。 另外,我开发了一个前端,可以导入SDK并通过它访问服务器。

正在开发中:

在本地开发时总结架构:

http://localhost:3000/frontend (w/ imported npm sdk) --> http://localhost:5000/api

在localhost开发中,我将其导入,并且一切正常,SDK占用了我开发的localhost服务器。 (在开发模式下,模块本身已被npm链接)。

同时进行测试:

SDK具有使其能够切换基础结构的功能,因此可以针对部署到生产(或登台)的服务器的先前版本进行测试。

在sdk.switchToInfrastructure()之后总结针对生产服务器的测试:

http://localhost:3000/frontend (w/ imported npm sdk) --> https://server.com/api

当我切换到https://server.com上的生产服务器时,从SDK发出的所有请求都被浏览器阻止:

GET https://server.com/api net::ERR_SSL_PROTOCOL_ERROR

我相信前端仍在HTTP上这一事实会导致问题。

如何防止这种情况发生?或任何有助于在多个已部署基础架构上测试其NPM模块的过程中的技巧。

[UPDATE 2]

其他信息:当我不通过npm导入我的SDK(我只是从本地文件导入sdk)时,根本没有问题,我可以从本地主机发出请求。

解决方法

如果您的服务器不支持CORS,浏览器将阻止Cross Origin Requests

这意味着,如果您的客户端(在localhost上运行)尝试获取production.server.com的端点,则默认情况下它将被阻止。

阅读有关CORS及其启用方法的文章。