Sencha Touch - 调用webservice的安全问题

时间:2012-05-11 09:06:44

标签: asmx sencha-touch-2

在我的Sencha触控应用中。我使用.net websevice来获取xml格式的数据。 我用Ext.Ajaxrequest称之为下面的

var frmurl ='http://Server/sencha/WS/web.asmx/GetData';
Ext.Ajax.request({
     url: frmurl,
     method: 'post',
     params: {
                       whereCondition :WhereCond,
                       ReportName:rptname
         },                                 
    success: function(Response) {
                 renderReport(Response.responseText,'1');
    }
    , failure: function (Response, request)
    {
       Ext.MessageBox.alert('Error, unable to load data');
    } //</failure> 

});

它工作正常并给我正确的结果,但我需要在web.config中添加以下标记以使其正常工作

<webServices>
  <protocols>
    <add name="HttpGet"/>
    <add name="HttpPost"/>
  </protocols>
</webServices>

但由于这个原因,任何人都可以调用webmethods,这是一个主要的安全问题。 如果我删除此标记,则无法调用webservice并导致内部服务器错误。

请帮帮我。 感谢

1 个答案:

答案 0 :(得分:1)

您要发现的是,您需要启用至少一个“协议”才能使客户端系统与您的Web服务进行通信,因此如果您的客户端设备支持SOAP或启用,您可以启用HttpSoap HttpPostLocalhost如果您的客户端和服务器始终位于同一台计算机上(您的客户端和服务器不会像您明确构建的移动网站那样)。

但是,您还发现,除非您设置某种身份验证,或者通过其他方式限制对Web服务的访问,例如,Web服务在发布时可以访问它们的定义。通过IP地址限制等。

你可能还不知道,但this question/answer与你的相似,应该帮助你达到一种相当标准的方式来实现你所追求的目标。