我制作了一个小的gwt应用程序并发布了它,但今天我发现了一个严重的问题。我意识到同源策略问题,所以我把我的gwt应用程序和rest 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.
处理这个问题的最佳方法是什么?我在谷歌上搜索了一下,第一次找到了对tomcat不起作用的.htaccess解决方案。我最终使用了一个空的登录页index.html,只重定向到没有www的url。这不是最好的解决方案,因为有人仍然可以键入带有www的url,它不会索引页面,所以不会被重定向。
任何帮助都将不胜感激。
除非绝对必要,否则不应在应用程序中使用绝对URL。
也就是说,你应该"http://example.com"如果应用程序可以从http://www.example.com.
例如,如果您想从中加载一些数据,例如。http://example.com/abc/def,然后将"/abc/def"
放入代码中,而不是"http://example.com/abc/def"
。这样,浏览器就会将URL解析为http://www.example.com/abc/def如果应用程序是从http://www.example.com,或http://example.com/abc/def如果是从加载的http://example.com.而且你永远不会冒险违反同源政策。
您应该只在一个子域下托管一个网站。所有到http://www.example.com
的业务都应重定向到http://example.com
,反之亦然。