无法从HttpServletRequest中提取标头

时间:2019-03-31 07:16:56

标签: java servlets

我正在研究微服务架构。我有3个具有不同域名的不同应用程序。假设应用程序1具有API:

 "/app/foo-bar"

此API是从应用程序2的某些服务调用的,该服务也由某些API触发。也可以从应用程序3调用此API。

我现在需要的是,在应用程序1中调用API时,我想知道从哪个应用程序中调用了该API。 (应用程序2或应用程序3的域名)

我尝试过这个:

request.getHeader("referer");

但这返回我为空

有什么办法解决这个问题?

2 个答案:

答案 0 :(得分:2)

您需要在原始应用程序(示例中为应用程序2或应用程序3)中添加Referer标头,以便将其包含在HttpRequest中。

这里提到了获取源主机的另一种方法: Get URL of the request sender with HttpServletRequest

答案 1 :(得分:2)

您必须在调用API的过程中设置标头。此外,您还必须在该API中获取标头以用作调用方的来源。

在API调用期间

SET标头import spacy

ipython -m pip install spacy

获取API标头

app/foo-bar

这是进口

RestTemplate restTemplate = new RestTemplate();

HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.APPLICATION_JSON);
headers.set("referer", "APP_1");

HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);