Я вызываю службу.asmx из внутреннего тега скрипта на странице aspx. Когда я просматриваю источник страницы, он показывает мой веб-сервис.
Как защитить веб-сервис от разоблачения? потому что, когда кто-то просматривает источник страницы, он может видеть имя веб-службы, а также имя всех методов.
.aspx Страница:
<asp:PlaceHolder ID="divBody" runat="server">
<div class="aa-dashboard-wrapper">
<asp:Textbox id="textbox1" runat="server"></asp:Textbox>
</div>
</asp:PlaceHolder>
Вот мой тег сценария, который помещен в нижней части моей страницы aspx.
$("#textbox1").autocomplete({
source: function (request, response) {
$.ajax({
url: '<%=ResolveUrl("~/WebService.asmx/webServiceMethod") %>',
data: "{ 'keyword': '" + request.term + "'}",
dataType: "json",
timeout: 20000,
type: "POST",
contentType: "application/json; charset=utf-8",
success: function (data) {
},
error: function (response) {
},
failure: function (response) {
}
});
},
select: function (e, i) {
},
minLength: 2
})
</script>
Хотя вы не можете запретить пользователям просматривать URL-адрес вашего сервиса, вы можете остановить их просмотр документации для него - просто поместите это в тег system.web
вашего web.config
<webServices>
<protocols>
<remove name="Documentation" />
</protocols>
</webServices>
См. Https://support.microsoft.com/en-us/kb/815149 в разделе "Удаление протокола документации".
Невозможно полностью скрыть конечные точки API от кого-то, кто хочет его найти. Даже если вы каким-то образом запутаете вызов этого в некоторой конструкции javascript, он все равно будет отображаться в веб-инспекторе Chrome. И на самом базовом уровне я все еще вижу это, когда перехватываю связь с пакетными снифферами.
Лучший способ - иметь JS файл и разместить там AJAX-вызов. Даже в этом случае пользователь может просматривать и просматривать JS, но шансов немного меньше.