首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找使用webapi-2调用api的url。

查找使用webapi-2调用api的url。
EN

Stack Overflow用户
提问于 2018-12-04 17:28:10
回答 2查看 1K关注 0票数 0

所以我有一个网站,可以说是它的网站1.com。在这个网站上,我调用了一个api,比如它的webapi.com/api/

一旦我进入我的get/post/我想得到网址。但是,我不想要webapi.com/api url,我想要website1.comurl。

是否有可能找到调用api的网站的url?因为目前任何研究都只提到

代码语言:javascript
复制
Url.Request.RequestUri.AbsoluteUri

但是这会产生webapi.com/api,这不是我想要的。

任何帮助都将不胜感激。

下面是我开始工作的一个快速代码示例。

代码语言:javascript
复制
[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作为参数发送,这很好,但我很好奇是否可能。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-04 18:10:21

您要寻找的是推荐程序

在WebApi 2中,您没有它,但您可以解决它。

检查这个答案:https://stackoverflow.com/a/38462860/7720

票数 2
EN

Stack Overflow用户

发布于 2018-12-06 20:36:21

解决办法是,我已经标记了一个更完整的答案,我将在这里张贴。实际上,您必须将引用程序从website1传递到webapi.com/api。但是,您不必将其作为参数传递。

您能做的,或者至少是我所做的,就是按照与授权令牌相同的方式传递它。而@Romias提供的链接也作为解决方案。在任何地方,您都可以传递一个比勒:“您的令牌”,您只需添加另一个标题,名为Referrer: request.url。

这里request.url是website1.com。现在,在我的代码中,我有一个拦截器,所以任何进行的http调用都被拦截,然后我添加了承载令牌,它看起来像这样的角度5。您的设置可能不一样。

代码语言:javascript
复制
 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);
    }
}

在那里,我只是附加了授权行,如下所示。

代码语言:javascript
复制
Authorization: `Bearer ${currentUser.access_token}`, Referrer:request.url

因此,您可以看到,我添加了一个名为Referrer的新标题,并将其设置为url。

从这里开始,您将访问api,就像链接的答案一样,您只需将这段代码放在api方法中即可。

代码语言:javascript
复制
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。然后,您可以任意使用或发送此字符串。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53618454

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档