【问题标题】:Access-Control-Allow-Origin issue with and without www in url网址中带有和不带有 www 的 Access-Control-Allow-Origin 问题
【发布时间】:2012-03-11 08:43:42
【问题描述】:

我做了一个小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,它不会索引页面,因此不会被重定向。

任何帮助将不胜感激。

【问题讨论】:

    标签: javascript gwt tomcat cross-domain


    【解决方案1】:

    除非绝对必要,否则不应在应用中使用绝对 URL。

    即如果可以从http://www.example.com 加载应用程序,您的代码中应该包含“http://example.com”。

    例如,如果您想从中加载一些数据,例如http://example.com/abc/def,然后将 "/abc/def" 放入您的代码中,不是 "http://example.com/abc/def"。这样,如果应用程序是从 http://www.example.com 加载的,浏览器会将 URL 解析为 http://www.example.com/abc/def,如果从 http://example.com 加载,浏览器会将 URL 解析为 http://example.com/abc/def。而且您永远不会冒险违反同源政策。

    【讨论】:

      【解决方案2】:

      您应该只在一个子/域下托管一个网站。到http://www.example.com 的所有流量都应重定向到http://example.com,反之亦然。

      【讨论】:

      • 这听起来不错,你能指出正确的方向吗?
      • 这取决于您的网络服务器。我对tomcat一无所知,但这个问题可能会有所帮助:stackoverflow.com/questions/1363605/tomcat-base-url-redirection
      • 感谢您的努力。我在发布问题之前尝试找到解决方案时看到了您提到的问题,这与此处的问题不同。
      猜你喜欢
      • 2018-11-17
      • 1970-01-01
      • 2011-07-28
      • 2018-12-13
      • 2015-09-09
      • 2012-07-27
      • 2016-04-22
      • 1970-01-01
      • 2016-05-19
      相关资源
      最近更新 更多