【发布时间】:2011-03-30 23:53:18
【问题描述】:
过去 5 个月我一直在开发一个 gwt 应用程序,现在是第三方人员开始使用它的时候了。为了准备这个,他们中的一个在反向代理后面设置了我的应用程序,这立即导致浏览器的同源策略出现问题。我猜响应标头中存在问题,但我似乎无法以任何方式重写它们以使问题消失。这个我试过了
response.setHeader("Server", request.getRemoteAddress());
以某种天真的尝试来模仿我想要的行为。没用(出乎所有人的意料)。
任何对此有所了解的人在阅读本文时很可能会窃笑并摇头,我不怪他们。如果是我,我也会窃笑……我对此一无所知,这自然使这个问题非常难以解决。任何帮助都将不胜感激。
如何让标头重写工作并摆脱我正在处理的 SOP 问题?
编辑:我遇到的确切问题是弹出窗口:
"SmartClient 无法直接联系 网址 'https://localhost/app/resource?action='doStuffs'" 由于浏览器同源策略。 去掉主机和端口号(甚至 如果 localhost) 来避免这个问题, 或使用 XJSONDataSource 协议(其中 允许跨站点调用),或使用 服务器端 HttpProxy 包含在 SmartClient 服务器。”
但是我不应该需要 smartclient HttpProxy,因为我在服务器顶部有一个代理,是吗?我没有迹象表明这可能是一个序列化问题,但也许这条消息隐藏了真正的问题......
解决方案 chris_l 和 saret 都帮助找到了解决方案,但由于我只能标记一个,所以我标记了来自 chris_l 的答案。鼓励读者把他们俩都打起来,他们真的在这里为我而来。解决方案非常简单,只需删除服务器的任何绝对路径并仅使用相对路径,这对我来说就是诀窍。谢谢大家!
【问题讨论】:
标签: gwt reverse-proxy same-origin-policy