Javascript 访问控制允许源站突然停止';行不通

Javascript 访问控制允许源站突然停止';行不通,javascript,jquery,tomcat,Javascript,Jquery,Tomcat,我们有一个只在ipad上运行的移动应用程序。在应用程序中,用户提交一个表单,应用程序将使用js/jquery调用服务器上的restful服务。服务器是Tomcat6,web应用程序使用spring+hibernate框架。在开发服务器上,我们遇到了cors问题,我在我的应用程序和jar文件中添加了web.xml中相应的过滤器。它在dev、qa和live服务器上运行良好,应用程序可以与服务器协调通信。但今天晚些时候,我刚从客户端收到一个错误报告,即除非重新安装应用程序,否则应用程序无法将数据上传到

我们有一个只在ipad上运行的移动应用程序。在应用程序中,用户提交一个表单,应用程序将使用js/jquery调用服务器上的restful服务。服务器是Tomcat6,web应用程序使用spring+hibernate框架。在开发服务器上,我们遇到了cors问题,我在我的应用程序和jar文件中添加了web.xml中相应的过滤器。它在dev、qa和live服务器上运行良好,应用程序可以与服务器协调通信。但今天晚些时候,我刚从客户端收到一个错误报告,即除非重新安装应用程序,否则应用程序无法将数据上传到服务器,这样应用程序中保存的所有数据都将消失。我使用javascipt和应用程序内部进行了测试。奇怪的是,我总是使用脚本得到异常:

XMLHttpRequest无法加载https://mobilesso.vw.com.cn/ssso/scc/registerSCCF. 请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源站“null”。

并且我始终能够通过应用程序将数据上传到服务器。我想知道为什么现在会这样。移动应用程序和网络应用程序可以正常工作一周左右,为什么从现在开始停止。以及为什么应用程序内部没有问题,但js有问题。任何建议都会有帮助

客户端测试代码如下:

<script type="text/javascript" id="address-candidate-template">
var request = null;

function getMessage()
{
    alert("Begin the test");
    createRequest();
    var url = "my url";
    request.onreadystatechange = handleResponse;
    request.open("GET", url, true);
    request.send(null);
}

function createRequest() {
    try {
        request = new XMLHttpRequest();
    } catch (trymicrosoft) {
        try {
            request = new ActiveXObject("MsXML2.XMLHTTP");
        } catch (othermicrosoft) {
            try {
                request = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (failed) {
                request = null;
            }
        }
    }

    if (request == null)
        alert("Error creating request object!");
}

function handleResponse() {
    alert(request.readyState + " " + request.status);
    if (request.readyState==4 && request.status==200)
    {
        var xmlDocument=request.responseXML;
        var fnames = xmlDocument.getElementsByTagName("statusCode");
        var v1 = fnames[0].childNodes[0].nodeValue;
        fnames = xmlDocument.getElementsByTagName("statusText");
        var v2 = fnames[0].childNodes[0].nodeValue;
        alert("Result:\nstatusCode: " + v1 + "\nstatusText: " + v2);  
    }

}
</script>
<div>
    <p>test the connectivity</p><input type="button" value="Get Result"   onclick="getMessage()"/>

var请求=null;
函数getMessage()
{
警报(“开始测试”);
createRequest();
var url=“我的url”;
request.onreadystatechange=handleResponse;
打开(“获取”,url,true);
请求发送(空);
}
函数createRequest(){
试一试{
请求=新的XMLHttpRequest();
}捕获(trymicrosoft){
试一试{
请求=新的ActiveXObject(“MsXML2.XMLHTTP”);
}捕获(其他Microsoft){
试一试{
请求=新的ActiveXObject(“Microsoft.XMLHTTP”);
}捕获(失败){
请求=null;
}
}
}
if(请求==null)
警报(“创建请求对象时出错!”);
}
函数handleResponse(){
警报(request.readyState+“”+request.status);
if(request.readyState==4&&request.status==200)
{
var xmlDocument=request.responseXML;
var fnames=xmlDocument.getElementsByTagName(“状态代码”);
var v1=fnames[0]。子节点[0]。节点值;
fnames=xmlDocument.getElementsByTagName(“状态文本”);
var v2=fnames[0]。子节点[0]。节点值;
警报(“结果:\n状态代码:+v1+”\n状态文本:+v2);
}
}
测试连接性

我使用了以下maven依赖项:

 <dependency>
    <groupId>com.thetransactioncompany</groupId>
    <artifactId>cors-filter</artifactId>
    <version>1.9.3</version>
</dependency>

交易公司
cors过滤器
1.9.3
并设置WEB-INF/WEB.xml:

 <!-- CORS Filter -->
    <filter>
        <filter-name>CORS</filter-name>
        <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    </filter>
    <filter-mapping>
            <filter-name>CORS</filter-name>
            <url-pattern>/*</url-pattern>
    </filter-mapping>

科尔斯
com.thetransactioncompany.cors.CORSFilter
科尔斯
/*

“Access Control Allow Origin突然不起作用”好吧,我可以向您保证,世界上的web浏览器突然改变了他们在您的网站上使用此标题的方式。我们怎么知道为什么这个停止工作了?您没有显示任何已更改的代码,也没有向我们显示HTTP请求/响应。只有你知道这些信息。我无法访问客户端代码。我自己编写了一些测试代码,这些代码过去很成功,但现在不再成功了。请参阅更新如果您将添加一些带有请求和响应标题的网络日志,那将非常棒。例如,您可以在chrome/firefox开发工具中获得它们(最简单的方法)。至少这是您应该开始的第一步-检查实际的标题。