我已经制作了一个小gwt应用并发布了它,但今天我发现了一个严重的问题。我知道相同的原始政策问题,所以我把我的gwt应用程序和休息json应用程序放在同一台服务器上。但显然浏览器不会将http://www.xyz.com和http://xyz.com视为同一来源,因此当用户登陆www.xyz.com时,他无法从http://xyz.com获取数据。
这是消息:
XMLHttpRequest cannot load http://xyz.com/backend/...
Origin http://www.xyz.com is not allowed by Access-Control-Allow-Origin.
处理此问题的最佳方法是什么?我用Google搜索并首先找到.htaccess解决方案,它不适用于tomcat。我最终使用了一个空的着陆页index.html,只重定向到没有www的url。这不是最好的解决方案,因为有些人仍然可以输入带有www的网址,这不会将索引页面编入索引,因此不会被重定向。
任何帮助将不胜感激。
答案 0 :(得分:7)
除非绝对必要,否则不应在您的应用中使用绝对网址。
即。如果可以从http://www.example.com加载应用,则应在代码中添加“http://example.com”。
例如,如果您要加载某些数据,例如http://example.com/abc/def,然后将"/abc/def"
放入您的代码中,不是 "http://example.com/abc/def"
。这样,如果应用已从http://www.example.com/abc/def加载,浏览器会将网址解析为http://www.example.com,如果已从http://example.com/abc/def加载,则会解析为http://example.com。而且你永远不会冒险达到同源政策。
答案 1 :(得分:2)
您应该只在一个子/域下托管一个网站。所有到http://www.example.com
的流量都应重定向到http://example.com
,反之亦然。