作为我们正在部署的产品的一部分,客户需要访问我们服务器上的远程API以访问内容和数据。尽管如此,由于某些原因和一些客户,整个页面在我们的服务器上的解决方案是不可取的(原因包括:控制设计,但主要是SEO,他们希望这些内容在“他们的域”下可用)。由于其他问题,不希望访问API服务器端的脚本。
我的想法如下(我将指出其缺陷,以便其他人可以提出替代方案):
1)创建一个简单的脚本托管在客户端服务器上,该服务器将获取来自某个URI路径的所有流量(catch-all脚本,类似于任何框架路由器)。 so / 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的情况下实现这个目的?
答案 0 :(得分:0)
执行此IMO的最简单方法是使用AJAX控制器(假设MVC设计)来处理所有远程请求。让控制器中的每个操作都返回JSON,然后通过服务器端调用轻松访问数据。
否则你正在使用#!解决方案(你不喜欢,这是正确的......),或使用JSONP(也很麻烦)。