Сделать веб-сервис недоступным для браузера?

1

Я написал веб-службу, потому что я хотел, чтобы мой javascript получал доступ к методам в нем на веб-сайте с помощью ajax. Я новичок в этом. Однако я просто понял, что asmx доступен через браузер, и он показывает тестовую страницу и xml вывод данных из этих методов. есть ли способ отключить этот интерфейс для веб-службы? Я хочу, чтобы он возвращал данные в javascript-методы при их вызове.

  • 2
    Нет. Если вы предоставляете сервис через URL, любой клиент в Интернете может получить к нему доступ. Вы никогда не сможете точно сказать, что находится на другом конце HTTP-запроса. Если вам нужен защищенный сервис, защитите его с помощью какого-либо механизма аутентифицированного сеанса.
  • 1
    «Тестовая» страница, о которой вы говорите, вполне нормальная. Веб-сервисы предоставляются с документом WSDL (язык описания веб-сервисов), и это тот документ, который вы видите. Это то, что говорит клиентам, что доступно и как вызывать методы.
Показать ещё 2 комментария
Теги:
web-services
webforms

3 ответа

1
Лучший ответ

Я не уверен, какую версию.NET Web Services вы используете, но вы можете отключить страницу справки веб-службы, которая обычно доступна только локально. Он также может отключить генерацию WSDL. См. Https://msdn.microsoft.com/en-us/library/2tyf2t8t(v=vs.100).aspx или https://www.thecodingforums.com/threads/how-to-disable-modify-the- по умолчанию-тест-страница-для-ASMX-веб-services.786001/

Если вы также хотите запретить другим пользователям доступ к вашему веб-сервису в целом, вы также должны изучить методы аутентификации.

  • 0
    Спасибо. На данный момент у меня есть только открытые данные. Я генерирую GUID для каждого пользователя и обслуживаю данные только для этих пользователей. Так что я думаю, что это нормально, потому что я держу GUID на сервере и никогда не выставляю его внешнему интерфейсу.
1

Ваш javascript обращается к вашему веб-сервису так же, как и к вашему браузеру. Закройте свой сервис из своего браузера, вы закроете его для своего javascript.

В принципе, вы говорите, что сделали дверь в своем доме, потому что хотите быть в состоянии войти (имеет смысл!), Но теперь вы беспокоитесь, потому что каждый может видеть дверь (вы могли бы подумать о htat раньше!) И использовать это (это ваша настоящая проблема!).
Ну так что ты делаешь? Вы положили замок на дверь.

Это не делает дверь невидимой, но она удерживает не тех людей.

Вы хотите сделать то же самое с веб-службой: реализовать проверку подлинности/авторизацию.

На стороне примечание: это 2017. Я даже не знал, что люди все еще используют.asmx. Посмотрите на WCF, он более или менее заменил старые веб-службы asmx еще в 2010 году или около того...

  • 0
    Недавно я изучил .NET, проходя стажировку в компании, которая работала с устаревшими системами, созданными на основе веб-форм. Итак, я изучил старые способы, и теперь я понимаю, что я продолжаю использовать старые технологии. Должен изучать WCF и двигаться дальше. Спасибо
0

Насколько я знаю. В вашем asmx не должны отображаться конфиденциальные данные. Если у вас есть проблемы с дизайном.

Данные XML, которые вы, вероятно, видите, это WSDL. Это не так, на самом деле это то, что позволяет потребителям знать, как структурирован ваш WebService. Для получения дополнительной информации об этом вы можете увидеть это приложение

Ещё вопросы

Сообщество Overcoder
Наверх
Меню