0

我正在从域 A 加载我的 GWT 项目,然后尝试从位于不同域 (B) 的另一台服务器中获取一些数据。所以我遇到了违反 SOP 的问题。为了解决这个问题,我在服务器 B 上实现了 CORS。现在通过 Firefox 桌面运行时,SOP 问题已经消失。然后我尝试在 ios 的 UIWebView 中运行相同的代码。不过,我似乎违反了 SOP:

public class MyRequestCallback implements RequestCallback {

    @Override
    public void onResponseReceived(Request request, Response response) {
        if (response != null) {
            if (response.getStatusCode() == 0) {
                // Is this a SOP violation?
            }
        }
    }
}

我可以看到连接需要一些时间(所以看起来请求正在发出),但随后我得到的状态代码为零。

有没有人遇到过这样的事情?很难弄清楚在哪里发布这个,因为它涉及堆栈的几个不同部分。也许我需要设置 UIWebView 上的一个属性来告诉它可以使用 CORS?

为了在我的服务器上实现 CORS(我正在使用码头),我使用了: http ://wiki.eclipse.org/Jetty/Feature/Cross_Origin_Filter

谢谢

- - - 更新 - - -

这就是我的过滤器在 web.xml 中的定义方式:

<filter-mapping>
  <filter-name>cross-origin</filter-name>
  <url-pattern>/api/v1/*</url-pattern>
</filter-mapping>

FF 客户端和 ios 客户端都在访问我的一个测试端点。

4

1 回答 1

0

我改变了启动码头的方式,现在使用:

http://wiki.eclipse.org/Jetty/Howto/Using_Jetty_Runner

代替:

http://wiki.eclipse.org/Jetty/Howto/Run_Jetty

使用跑步者运行我的战争,跨源请求工作正常。对于我使用的 jetty 版本(v7.3)和由于这个问题而更新到的版本 v7.6.9 都是如此。所以我之前启动码头的方式可能有一些错误。

谢谢

于 2013-02-06T01:37:38.467 回答