我正在编写一个 Phonegap 应用程序,该应用程序需要能够调用受 CAS 保护的远程 Web 服务。该应用程序还将作为移动网站托管在我们的网络农场(减去硬件特定部分)上。
我们的 CAS 服务器由 server1 托管,我们的 Web 服务托管在 server2 上。移动网站托管在 server2 上。
我从 Javascript 进行的任何调用都会出现跨域错误。我意识到这对手机来说不是问题,但最好避免它,因为在桌面上运行时开发会容易得多。
目前,我有一个工作设置,包括以下内容:
- Javascript 通过 https 调用 server2 上的服务器端脚本,包括标题中的用户名和密码。
- 该脚本调用 CAS 的 RESTful api 并获取票证授予 cookie。该脚本会在响应中创建一个 Set-Cookie 标头,或者它会报告登录错误。
- Javascript 获取响应并创建 cookie(尽管在 Phonegap 中无法检测到此 cookie(document.cookie 中没有任何内容),即使它正在被传递)。
- 然后,Javascript 调用一个服务器端脚本,该脚本为它调用一个 web 服务,将 cookie 与请求一起传递(我必须手动将 cookie 插入到请求标头中,即使它是自动在来自 javascript 的请求中传递的)。
- 服务器端脚本将结果发送到 javascript。
有一个更好的方法吗?我在 CAS 中看到过提到代理票证,但找不到足够的信息来了解它是否是我需要的或如何使用它们。
谢谢你。