Я хочу создать только одну службу 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 из заголовка запроса? или что-то другое?
1 ответ
Есть много способов справиться с этим:
1- ClientType : каждый клиент должен представиться, например, клиент B устанавливает ключ заголовка для всех запросов (например: ClientType:client-b
), и вы можете определять своих клиентов.
2- Источник : вы можете прочитать Origin
из заголовков запросов и определить клиентов по их доменам, но я думаю, что это не очень хорошая идея, потому что домены могут быть изменены в любое время.
Ключ 3-Api : вы можете сгенерировать уникальный ключ для каждого клиента (Guid
- хороший выбор), и клиенты должны установить свой ключ api во всех заголовках запроса (например, api-key: XXXXXXXX
) и на стороне сервера определять клиентов по ключу.
Наконец, я предлагаю вам обрабатывать клиентов в промежуточном программном обеспечении и передавать его с функциями http вашим контроллерам.
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.