Я хочу создать только одну службу API Asp.Net Core для нескольких веб-сайтов. они почти одинаковы, но имеют разное содержание.

Я хочу знать, какой веб-сайт вызывает API для возврата содержимого этого веб-сайта.

Например :

Первый веб-сайт (клиент angular): http://Game.medis.land

Второй веб-сайт (клиент angular): http://Tech.medis.land

API (/ api / getservices) => вернуть все службы (в зависимости от того, какой сайт вызывает API, метод возвращает разные значения)

If Site-One call => {"previews", "reviews"}

При вызове Site-Two => {"программное обеспечение", "оборудование"}

Как мне с этим справиться? могу ли я получить URL из заголовка запроса? или что-то другое?

2
Ali.Ahmadi 16 Окт 2020 в 23:54

1 ответ

Лучший ответ

Есть много способов справиться с этим:

1- ClientType : каждый клиент должен представиться, например, клиент B устанавливает ключ заголовка для всех запросов (например: ClientType:client-b), и вы можете определять своих клиентов.

2- Источник : вы можете прочитать Origin из заголовков запросов и определить клиентов по их доменам, но я думаю, что это не очень хорошая идея, потому что домены могут быть изменены в любое время.

Ключ 3-Api : вы можете сгенерировать уникальный ключ для каждого клиента (Guid - хороший выбор), и клиенты должны установить свой ключ api во всех заголовках запроса (например, api-key: XXXXXXXX ) и на стороне сервера определять клиентов по ключу.

Наконец, я предлагаю вам обрабатывать клиентов в промежуточном программном обеспечении и передавать его с функциями http вашим контроллерам.

3
Saeed Esmaeelinejad 16 Окт 2020 в 22:43