【发布时间】:2012-09-15 22:04:43
【问题描述】:
我的应用具有以下架构:
jQueryMobile Web 应用程序 --> 从 ---> 用 C# 创建的 REST API 获取 JSON
我已将 REST API 代码放在 IIS 6 的虚拟目录中。 移动端代码是在网站根目录下运行的……所以大致的文件结构是这样的:
网吧/ /index.html 我的javascript.js /restapi/ 网络配置 全球.asax bin/(一堆 Dlls...)服务器位于具有以下 IP 转换类型的网络后面(不是真正的 IP...) 例如:
Web 服务器外部 IP:121.131.141.50(带有 URL http://mysite.com/) 内部IP:10.210.2.5 子网:255.255.255.0我已尝试通过 IP 限制对 restapi 文件夹的访问,因为我希望它只能从 Web 服务器访问。我尝试了 IIS 方法并设置了目录安全设置,还尝试了使用 ServiceAuthorizationManager 类检查 Http 请求中的请求 IP 的方法。
两种方法都给了我相同的结果:通过 Fiddler 限制和测试实际服务调用没有问题,以证明除了 Web 服务器 IP:10.210.2.5 之外的任何 IP 都会抛出 401。我还能够从网络服务器执行它(这是所需的设置)。
但是,一旦移动网站 javascript 调用它,我就会得到未经授权的 401。由于 Javascript 代码是客户端,restapi 假定调用来自客户端的 IP 地址,这当然是被阻止的。
有没有一种简洁的方法来检查调用是否来自 JavaScript 所在的 IP?
或者有没有更好的方法来处理整个事情?! :-/ 有没有办法让网络应用程序特别允许访问restapi 虚拟目录?
【问题讨论】:
-
您可以访问客户端代码吗?您可以使用自定义 HTTP 标头并在服务器上检查它吗?
-
如果代码在客户端(Javascript)上运行,请求是来自客户端。除了让代码不在客户端而是在其他地方运行之外,没有其他解决方法。
标签: javascript security jquery-mobile iis-6 ip-address