我有一个GWT appilcation,其中客户端向另一个域发出请求。 我在GWT中使用RequestBuilder编写了请求。
执行代码时,我的浏览器出错:
No 'Access-Control-Allow-Origin' header is present on the requested resource.
所以我谷歌,我发现我提出请求的域应该在它发送的响应中添加此标头。现在我无法控制其他域的服务器,因此我无法对其进行任何修改。
我的问题是,在将其发送到我的客户端之前,我是否可以拦截响应和Access-Control-Allow-Origin标头到我服务器上其他域服务器发送的响应? 我尝试使用过滤器,但不会调用过滤器来自另一个域的响应。
这可能吗,我错过了什么或是不可能吗?
答案 0 :(得分:1)
Vivek的回答是,除了CORS机制之外,浏览器不允许跨域请求,因为支持它的新浏览器可以尝试跨服务器到服务器也支持它。
但是,除非该远程服务器本身支持它,否则您无能为力。如果我从A服务我的应用程序,并想要连接到B,只有B可以授权。如果允许A允许我的应用程序通过某个过滤器或servlet连接到B,那么我可以编写一个应用程序来调用gmail或facebook或twitter,并在其他URL上读取/写入您的设置和个人数据。
相反,它是您正在联系的跨源服务器,必须批准与您提到的标头的连接。除此之外,您仍然可以使用自己的服务器作为跨源服务器的代理。
答案 1 :(得分:0)
根据相同的原始安全策略,Web浏览器禁止跨域请求。这些限制仅限于基于浏览器的应用程序,因此您绝对可以使用自己的服务器应用程序作为基于GWT的客户端应用程序与外部服务器之间的过滤器。