Найдите URL, который вызывает API, используя webapi-2. - PullRequest
0 голосов
/ 04 декабря 2018

Итак, у меня есть веб-сайт, скажем, его website1.com.С этого веб-сайта я призываю API, скажем, его webapi.com/api/

Как только я нахожусь в моем получить / сообщение / я хочу получить URL.Однако я не хочу URL-адрес webapi.com/api Я хочу URL-адрес website1.com.

Можно ли найти URL сайта, который вызывает API?Потому что в настоящее время любое исследование вызывает только

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();
            }
        }

Примечание. Я пытаюсь найти URL, который отправляет запрос к API внутри API.Если это невозможно, и я должен отправить URL как параметр, это нормально, но мне любопытно, если это возможно.

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Решение - то, что я отметил, однако для более полного ответа я просто отправлю здесь.Вы должны будете передать Реферера с веб-сайта 1 на webapi.com/api.Однако вам не нужно передавать его в качестве параметра.

То, что вы можете сделать или, по крайней мере, я сделал, это передать его так же, как я использовал токен авторизации.Который ссылка @Romias предоставила в качестве решения также.Везде, где вы передаете Bearer: «ваш токен», вы просто добавляете другой заголовок, называемый 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 есть url website1.com.Затем вы можете использовать или отправить эту строку по своему усмотрению.

Надеюсь, это поможет.

0 голосов
/ 04 декабря 2018

То, что вы ищете, это REFERRER .

В WebApi 2 его нет, но вы можете обойти его.

Проверьте этот ответ: https://stackoverflow.com/a/38462860/7720

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...