几天前,我在本地主机上遇到了这个问题,我用proxy.conf.json修复了它。
proxy.config.json:
{
"/1/indexes": {
"target": "https://{{myApplicationID}}-dsn.algolia.net",
"secure": true,
"changeOrigin": true
}
}
字符串
在我的服务.ts:
const url: any = `/1/indexes/Product/browse?page=0&hitsPerPage=20`;
this.httpClient.get(url,{
headers: {
'X-Algolia-Api-Key': `${this.algoliaApplicationKeyForBrowse}`,
'X-Algolia-Application-Id': `${this.algoliaApplicationID}`,
},
});
型
在localhost上运行良好。
但现在的问题是,我已经将此应用程序部署到Heroku上的临时服务器上,但此代理在那里无法工作。
/1/indexes/Product/browse?page=0&hitsPerPage=20返回我的应用主页,而不是访问Algolia服务器。
在Heroku上构建并部署应用程序后,是否可以使用相同的proxy.conf.json?
我尝试在build下的angular.json中添加proxy.conf.json,但无法正常工作。
1条答案
按热度按时间5hcedyr01#
在Heroku上,您不能使用proxy.conf.json方法来代理对Algolia或任何其他外部API的请求。
proxy.conf.json
仅用于ng serve的本地开发。要使其在Heroku上工作,您需要在后端服务器上设置代理(在Heroku上运行)。后端服务器会将请求转发给Algolia,并附上必要的头文件,然后将响应返回给你的Angular应用。
以下是步骤的简单概述:
1.在Heroku上设置一个后端服务器(例如,使用Express的Node.js)。
1.在后端服务器上创建一个路由来处理到Algolia的代理请求。
1.更新Angular服务,向后端服务器的代理路由发出请求,而不是直接向Algolia发出请求。
1.后端服务器将处理代理并将请求转发到Algolia,添加所需的头。
字符串
Angular Service(API.service.ts):
型
Angular Component(dashboard.component.ts):
型
请注意,这是一个简化的示例,实际的实现将取决于您的后端服务器技术和设置。确保在Heroku服务器上配置环境变量
(e.g., ALGOLIA_API_KEY and ALGOLIA_APPLICATION_ID)
,以确保敏感数据的安全。这样,您就可以在Heroku上安全地代理请求到Algolia,而不依赖于
proxy.conf.json