所以我有一个网站,可以说是它的网站1.com。在这个网站上,我调用了一个api,比如它的webapi.com/api/
一旦我进入我的get/post/我想得到网址。但是,我不想要webapi.com/api url,我想要website1.comurl。
是否有可能找到调用api的网站的url?因为目前任何研究都只提到
Url.Request.RequestUri.AbsoluteUri但是这会产生webapi.com/api,这不是我想要的。
任何帮助都将不胜感激。
下面是我开始工作的一个快速代码示例。
[Route("")]
public IHttpActionResult Get()
{
try
{
return this.Url.Request.RequestUri.AbsoluteUri;
}
catch (Exception e)
{
ErrorLogService.SaveErrorLog(e, this.User.Identity.Name);
return InternalServerError();
}
}注意,我正在试图找到在api中向api发送请求的url。如果这是不可能的,我必须将url作为参数发送,这很好,但我很好奇是否可能。
发布于 2018-12-04 18:10:21
发布于 2018-12-06 20:36:21
解决办法是,我已经标记了一个更完整的答案,我将在这里张贴。实际上,您必须将引用程序从website1传递到webapi.com/api。但是,您不必将其作为参数传递。
您能做的,或者至少是我所做的,就是按照与授权令牌相同的方式传递它。而@Romias提供的链接也作为解决方案。在任何地方,您都可以传递一个比勒:“您的令牌”,您只需添加另一个标题,名为Referrer: request.url。
这里request.url是website1.com。现在,在我的代码中,我有一个拦截器,所以任何进行的http调用都被拦截,然后我添加了承载令牌,它看起来像这样的角度5。您的设置可能不一样。
export class JwtInterceptor implements HttpInterceptor {
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
if (temp && temp.access_token) {
request = request.clone({
setHeaders: {
Authorization: `Bearer ${temp.access_token}`
}
});
}
return next.handle(request);
}
}在那里,我只是附加了授权行,如下所示。
Authorization: `Bearer ${currentUser.access_token}`, Referrer:request.url因此,您可以看到,我添加了一个名为Referrer的新标题,并将其设置为url。
从这里开始,您将访问api,就像链接的答案一样,您只需将这段代码放在api方法中即可。
public IHttpActionResult Get()
{
try
{
var temp = Request.Headers.Referrer == null ? "unknown" : Request.Headers.Referrer.AbsoluteUri;
return temp;
}
catch (Exception e)
{
ErrorLogService.SaveErrorLog(e, this.User.Identity.Name);
return InternalServerError();
}
}现在,temp有了urlwebsite1.com。然后,您可以任意使用或发送此字符串。
希望这能有所帮助。
https://stackoverflow.com/questions/53618454
复制相似问题