【问题标题】:Javascript XmlHttpRequest IssuesJavascript XmlHttpRequest 问题
【发布时间】:2009-10-14 20:26:57
【问题描述】:

我创建了一个在 Mac OS X 上的 Apache Web 服务器上运行的 html/javascript 网站。该网站通过 XmlHttpRequest 使用带有 JSON 的 .NET Web 服务。此 Web 服务在 Windows Vista 机器上运行。

可通过以下网址访问该网站:http://macintosh.companyname.local/~username/Sitename/index.html. 当我使用 Safari 在 Mac 上打开网站时,我没有从 Web 服务返回任何 JSON 数据。

当我使用 URL file://Users/username/Sites/Sitename/index.html 打开网站时,它运行良好。

我的第一个想法是这与 XmlHttpRequest 和它在许多浏览器中的安全限制有关,但我不确定为什么当我通过网络服务器而不是 html 的绝对路径调用站点时它不起作用文件。

这里是我用来调用 Web 服务的代码:

<div id="eigenRisico" class="panel" title="Eigen Risico">
<h2>Eigen Risico Per Polis</h2>     
    <script type="text/javascript">         
    var xhr = new XMLHttpRequest();
    xhr.open("POST", "http://webserviceurl/GetEigenRisicoVerzekerde", true);        
    xhr.onreadystatechange = function(){

        if (xhr.readyState === 4) { 
            var result = eval('(' +xhr.responseText+')');           
            var ihtml="";
            var j = 0;
            for(i = 0; i < result.d.length/2; i++) {
                ihtml=ihtml+"<fieldset><div class='row'><label>Polisnummer:</label><span>"+result.d[j]+"</span></div>";
                j++;
                ihtml=ihtml+"<div class='row'><label>Resterend Eigen Risico:</label><span>&euro "+result.d[j]+"</span></div></fieldset>";
                j++;
            }               
            document.getElementById('eigenRisico').innerHTML = ihtml;
        }
    };
    xhr.setRequestHeader("content-type", "application/json");
    var postData = '{"bsn": "999999999"}';
    xhr.send(postData);
    </script>               
</div>

有人知道为什么会这样吗?

【问题讨论】:

    标签: javascript xmlhttprequest


    【解决方案1】:

    你不能做跨域ajax请求

    http://en.wikipedia.org/wiki/Same_origin_policy

    您可以通过在您自己的域上设置一个代理页面来解决此问题,该页面将接收请求并将其重定向,然后将输出重定向回您。

    你在运行 PHP 吗?还是其他服务器端处理?

    编辑
    只是为了澄清您的原始问题,从 file:// 读取时,安全策略与 http:// 不同。本地资源被认为是可信的,因此允许 ajax 请求通过。作为一个网址,它看起来就像一个网站正在以你的名义做一些它可能不应该做的事情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-05
      • 2011-09-29
      • 1970-01-01
      • 2011-10-14
      • 2011-10-14
      相关资源
      最近更新 更多