我在 aspx 页面的脚本标签内调用 .asmx 服务。当我查看页面源代码时,它显示了我的网络服务。
如何保护网络服务不被暴露? 因为当有人查看页面源代码时,他可以看到 Web 服务名称及其所有方法名称。
.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,但您可以阻止他们查看它的文档 - 只需将其放在 web 的
system.web
标记中.config
<webServices>
<protocols>
<remove name="Documentation" />
</protocols>
</webServices>
参见 https://support.microsoft.com/en-us/kb/815149关于“删除文档协议(protocol)”
关于c# - 如何在源代码中隐藏 .asmx web 服务 API 端点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25523416/