1

作为我们正在部署的产品的一部分,客户端需要访问我们服务器上的远程 API 来访问内容和数据。尽管如此,由于某些原因和某些客户,整个页面都在我们的服务器上的解决方案是不可取的(原因包括:控制设计,但主要是 SEO,并且他们希望这些内容在“他们的域”下可用).. . 由于其他问题,不希望使用访问 API 服务器端的脚本。

我的想法如下(我会指出它的缺陷,以便其他人可以提出替代方案):

1)制作一个简单的脚本托管在客户端服务器上,该脚本将从某个 URI 路径获取所有流量(catch-all 脚本,类似于任何框架路由器)。所以 /MyApp/*. 该脚本将始终返回单个代码,即“加载器 javascript 和样式”...

2)通过上面脚本返回的javascript,提取URL,在需要的路径/MyApp/[*]之后处理URI,并用JSONP或CORS正则ajax发送到外部调用,然后返回适当的样式并显示.

这样,/MyApp/abc 和 /MyApp/def 之类的 url 在浏览器源中将具有相同的 html/js,但 JS 会从 ajax 调用加载不同的数据,因此显示不同的内容......

这似乎是一个很好的解决方案,唯一的缺点是,据我了解,谷歌和其他搜索引擎永远无法访问 abc 和 def 的内容,他们只能访问“加载器 javascript 和样式”(很明显,他们不会运行JS)...

所以这比 #! 因为它不会与 URL 搞砸,但仍将取决于 JS,因此对搜索引擎不友好......

由于服务器限制,我宁愿有一个简单的“catchall”页面,并从客户端调用 API,而不是强制要求 curl 等最低要求......另外我可以访问以这种方式更容易最终用户的 IP 地址(尽管我可以制作更精细的代理 - 这会使在客户端服务器上安装它变得更加困难)......

有没有办法在不从服务器端连接到 api 的情况下实现这一点?

4

1 回答 1

0

执行此 IMO 的最简单方法是使用 AJAX 控制器(假设 MVC 设计)来处理所有远程请求。让控制器中的每个操作都返回 JSON,然后您可以通过服务器端调用轻松访问数据。

否则,您正在使用 #! 解决方案(您不喜欢,这是正确的..),或使用 JSONP(也很麻烦)。

于 2012-06-18T15:41:40.167 回答