跨域-前端内容与后端API -如何避免硬编码后端API在哪里



我有前端内容,需要后端REST api的功能。这些api允许跨域资源共享(CORS)。通常我们在本地运行完整的堆栈,包括为开发使用量身定制的用户模式Nginx实例,该实例服务于前端内容。然而,指望兼职承包商来处理完整的堆栈有点太过分了。所以我想要一个非常基本的方法,他们可以用它来有效地完成工作。

他们目前的解决方案是可怕的:

var port = location.port;
// base url of backend API
var url = window.location['origin'];
if (port != '443') {
    // assume we're running in "development" mode against a staging server
    url = "https://staging-server.somewhere.com";
}

除此之外,这是进一步的前端内容,这是一个有点笨拙的事实-它排除了静态内容以各种其他方式托管,包括一套功能和集成测试。

我有一些想法,比如让他们运行一个小型的web服务器代理后端api,但我真正想要的是一些更简单的东西,允许我以一种不那么笨拙的方式默认url。理想情况下,会有某种方式从一个被版本控制忽略的文件配置url(例如,.gitignore)。

我能够创建一个适用于所有本地开发方式以及生产版本的解决方案。

我创建了一些JavaScript, apiurl.js,它与我们所有其他JavaScript内容并列。如果存在apiurl.js文件,我将其responseText读入eval()。因此,前端可以根据该文件的内容更改URL。

。, apiurl.js has:

var apiurl = "https://staging-server.somewhere.com";

和处理内容的JavaScript:

eval(responseText);
if (typeof(apiurl) != undefined) {
    url = apiurl;
}

版本控制不跟踪apiurl.js文件,也不用于生产。

相关内容

  • 没有找到相关文章

最新更新