如何在 nodejs express 环境中获取浏览器完整 url 页面,似乎是 nginx 问题?
how to get browser full url of the page in nodejs express in environment, seems nginx issue?
我在我的应用程序 (SpalatcusV3.4) 中使用 url 重写功能。
我从节点 js 调用我的后端来检查产品代码是否存在
为此,我需要用户在地址栏中输入的当前浏览器 url。
我正在使用以下代码
访问url
const fullUrl = req.protocol + '://' + req.get('host')
这在我的本地系统上运行良好,但部署在任何环境中时(通过 SAP)
这个 URL 是 "127.0.0.1:4200" ,这里的环境问题可能是什么?
或者获取用户输入的完整浏览器 url 的正确方法是什么?
任何帮助将不胜感激!!!
提前致谢
请参考斯巴达克斯文档的这一部分:https://sap.github.io/spartacus-docs/server-side-rendering-coding-guidelines/#getting-the-request-url-and-origin
它建议在使用代理后面的 运行 SSR 设置时使用 SERVER_REQUEST_URL
和 SERVER_REQUEST_ORIGIN
注入令牌来解析 URL。
要使用这些可选 标记:
- 假定您在
server.ts
文件中使用来自 @spartacus/setup/ssr
的斯巴达克斯 NgExpressEngineDecorator
。
- 注入它们时,您应该将它们标记为
@Optional
(根据文档),因为这些在 CSR 应用程序中不可用。
const obj = {};
const rc = request.headers.cookie;
rc?.split(';')?.forEach((cookie: any) => {
const parts = cookie?.split('=');
obj[parts.shift().trim()] = decodeURI(parts?.join('='));
});
return obj;
它可以给出请求对象中所有 cookie 的列表,因此使用 OBJ['RT'] 可以给出值并进一步拆分为 '=' 我们可以从那里得到确切的请求 URL可以使用下面的代码提取主机和来源
const cookieName = 'RT';
const cookieObj = this.getCookieasObject(req);
let fullURL = cookieObj[cookieName];
if (fullURL) {
fullURL = decodeURIComponent(JSON.parse(fullURL).split('=')[1]);
}
const url = new URL(fullURL);
const baseUrl = `${url.protocol}//${url.hostname}`;
我在我的应用程序 (SpalatcusV3.4) 中使用 url 重写功能。 我从节点 js 调用我的后端来检查产品代码是否存在 为此,我需要用户在地址栏中输入的当前浏览器 url。
我正在使用以下代码
访问urlconst fullUrl = req.protocol + '://' + req.get('host')
这在我的本地系统上运行良好,但部署在任何环境中时(通过 SAP) 这个 URL 是 "127.0.0.1:4200" ,这里的环境问题可能是什么?
或者获取用户输入的完整浏览器 url 的正确方法是什么?
任何帮助将不胜感激!!!
提前致谢
请参考斯巴达克斯文档的这一部分:https://sap.github.io/spartacus-docs/server-side-rendering-coding-guidelines/#getting-the-request-url-and-origin
它建议在使用代理后面的 运行 SSR 设置时使用 SERVER_REQUEST_URL
和 SERVER_REQUEST_ORIGIN
注入令牌来解析 URL。
要使用这些可选 标记:
- 假定您在
server.ts
文件中使用来自@spartacus/setup/ssr
的斯巴达克斯NgExpressEngineDecorator
。 - 注入它们时,您应该将它们标记为
@Optional
(根据文档),因为这些在 CSR 应用程序中不可用。
const obj = {};
const rc = request.headers.cookie;
rc?.split(';')?.forEach((cookie: any) => {
const parts = cookie?.split('=');
obj[parts.shift().trim()] = decodeURI(parts?.join('='));
});
return obj;
它可以给出请求对象中所有 cookie 的列表,因此使用 OBJ['RT'] 可以给出值并进一步拆分为 '=' 我们可以从那里得到确切的请求 URL可以使用下面的代码提取主机和来源
const cookieName = 'RT';
const cookieObj = this.getCookieasObject(req);
let fullURL = cookieObj[cookieName];
if (fullURL) {
fullURL = decodeURIComponent(JSON.parse(fullURL).split('=')[1]);
}
const url = new URL(fullURL);
const baseUrl = `${url.protocol}//${url.hostname}`;