【问题标题】:How to solve JavaScript origin problem with an application and static file server如何使用应用程序和静态文件服务器解决 JavaScript 起源问题
【发布时间】:2011-02-13 13:12:18
【问题描述】:

在我正在构建的系统中,我想服务

  1. 静态文件(静态 HTML 页面和大量图片),以及
  2. 我的 servlet 生成的动态 XML。

动态 XML 是从我的数据库(通过 Hibernate)生成的,我使用 Restlets 来提供它以响应 API 调用。我想创建一个静态文件服务器(例如 Apache),这样就不会干扰动态服务器流量。目前两台服务器都需要在同一台机器上运行。

我以前从未做过这样的事情,这就是我卡住的地方:

静态 HTML 页面包含对动态服务器进行 API 调用的 JavaScript。但是,由于两台服务器在不同的端口上运行,我遇到了相同的起源问题。怎么解决?

作为奖励,如果你能指出任何资源来解释如何创建这样一个静态/动态内容服务系统,我会很高兴。

谢谢!

【问题讨论】:

  • 把两台服务器都放在 Tomcat 后面是个好主意吗?然后,Tomcat 可以将静态和动态文件请求定向到相应的服务器。此外,所有客户端请求都将发送到相同的 IP 地址,这样可以解决这个问题吗?

标签: javascript apache mod-proxy same-origin-policy


【解决方案1】:

您应该在 apache 中设置 mod_proxy 以将动态请求转发到您正在使用的任何后端服务器。您现有的设置(即两个单独的端口)是完美的,您只需要告诉 apache '代理动态请求到我的后端服务器而不让浏览器知道'。

这个页面应该让你开始 - http://httpd.apache.org/docs/1.3/mod/mod_proxy.html

【讨论】:

  • 谢谢先生。一个问题:如果我这样做,我是否仍然实现 JSON 方法,或者在这种情况下同源策略问题会消失吗?
  • 它消失了。您将配置 apache 以将 /backend/* 等 url 模式代理到您的后端服务器。因为浏览器不知道两个服务器,同源策略问题就消失了。
  • 太好了,我已经安装了 Apache2 和 mod_proxy,现在正在处理这个问题。感谢 cmets。
  • 耶,有效。人类的一小步,我的宽慰!
【解决方案2】:

你需要从 Reslet 服务器加载一个脚本标签...看看JSONP 和这个SO post

【讨论】:

    猜你喜欢
    • 2010-12-10
    • 1970-01-01
    • 2016-04-06
    • 1970-01-01
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多