我的应用程序具有以下架构:
jQueryMobile web 应用程序 --> 获取 JSON ---> 用 C# 创建的 REST API
我已将 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
我尝试restapi
通过 IP 限制对文件夹的访问,因为我希望它只能从 Web 服务器访问。我尝试了 IIS 方法并设置了目录安全设置,还尝试了使用ServiceAuthorizationManager
类检查 Http 请求中的请求 IP 的方法。
两种方法都给了我相同的结果:通过 Fiddler 限制和测试实际服务调用没有问题,以证明除了 Web 服务器 IP:10.210.2.5 之外的任何 IP 都会抛出 401。我还能够从网络服务器执行它(这是所需的设置)。
但是,一旦移动网站 javascript 调用它,我就会得到未经授权的 401。由于 Javascript 代码是客户端,restapi 假定调用来自客户端的 IP 地址,这当然是被阻止的。
有没有一种简洁的方法来检查调用是否来自 JavaScript 所在的 IP?
还是有更好的方法来处理整个事情?!:-/ 有没有办法让 web 应用程序特别允许访问restapi
虚拟目录?