绕过同一服务器上两个站点之间的Web安全限制

时间:2016-10-31 11:57:46

标签: rest angular proxy xss

我正在使用Eclipse开发一个由Angular 2前端和Java REST后端组成的应用程序。

对于前端,我使用Angular CLI插件,该插件通过向CLI发出ng serve命令来启动应用程序。此命令在端口4200上设置http服务器。

对于后端,我使用的是公司内部框架,该框架在Eclipse 808端口的Jetty中启动。

虽然这两个端口都是可配置的,但根据使用的框架和插件的性质,它们总是不同的。

身份验证通过OAuth2服务工作,该服务也部署到端口8088,作为框架的一部分。此服务设置一个cookie,用于证明浏览器会话已通过身份验证。我已经通过对REST API的Swagger实例(也在8088中作为同一框架的一部分运行)测试它来验证此服务是否正常工作。

问题在于,当浏览器针对:4200上的Angular 2应用程序时,其内部REST API请求:8088不携带身份验证cookie。据推测,这是因为跨站点保护。

有没有办法让应用程序或框架告诉浏览器这两个"网站"实际上是同一系统的一部分?

或者,如果我必须配置开发浏览器(Chrome),我也可以使用它。不过,我已经尝试了--disable-web-security --user-data-dir推荐,但Cookie仍然没有显示在请求中。

最后,我在开发机器上安装了Apache。如果我可以设置适当的虚拟主机并将其用作代理,以便浏览器认为它完全相同,那么这也可能有效。这只是拦截所有/swagger/api请求并将其发送到:8088,并将所有其他请求转发到:4200。但是,我一直在反对mod_rewrite和mod_proxy,并且没有能够提出任何有用的东西。

1 个答案:

答案 0 :(得分:1)

我认为您正在寻找的是

withCredentials = true

https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/withCredentials