2017-08-10 84 views
0

寻求绕过同源策略(并且缺少后端服务器 - 我只有一个网站,它是Google Drive上托管的JS脚本)我决定使用WhateverOrigin作为我正在为某人工作的项目。为什么我不能在此网站上执行Ajax获取?

到现在为止它的工作的每一个网站上 - 除了this one它返回一个404

对于未工作页面之间的比较见my JSFiddle test(以下代码片段),和一个正在运行的(对于某些因为这些函数是以相反的顺序工作的,但是注释掉其中一个函数调用清楚地显示哪个URL正在工作,哪个不工作)。

// for some reason this is calling the functions in the reverse order -- but try commenting out and you'll see that the second one doesn't work, the first one does 
 

 
$(function() { 
 

 
    works(); 
 
    notWorking(); 
 

 
    function works() { 
 
    $.getJSON('https://whateverorigin.herokuapp.com/get?url=' + encodeURIComponent("http://afcl.ussoccerda.com/sam/teams/index.php") + '&callback=?', function(data) { 
 
     alert(data.contents); 
 
    }); 
 
    } 
 

 
    function notWorking() { 
 
    $.getJSON('https://whateverorigin.herokuapp.com/get?url=' + encodeURIComponent("http://afcl.ussoccerda.com/sam/teams/index.php?team=1642601") + '&callback=?', function(data) { 
 
     alert(data.contents); 
 
    }); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

Hurl.it能够获取页面数据,它只是罚款,但: enter image description here

我在茫然,我做错了什么编程,或者我可以如何解决这个问题。除此之外,我没有太多的选择使用WhateverOrigin,因为我的整个项目都是基于它的,除了这一个网页,其他所有内容都在运行。

回答

0

我假定在最终版本中,Web应用程序和服务器将位于同一个域中,并且您只需在开发过程中执行跨源请求。 如果您只需要在开发中进行交叉原点请求,那么在您的开发中使用chrome并为chrome安装“Allow-Control-Allow-Origin:*”插件并启用跨源访问。

+0

在最终版本中,Web应用程序和服务器将不在同一个域中 - 这将是我现在拥有它的方式,以及我正在为此脚本/网站进行操作的人员(不能比这更具体)将不得不能够使用它。美国足球发展学院的每个网址都有效,除了我引用的[特定的一个](http://afcl.ussoccerda.com/sam/teams/index.php?team=1642601)。我不明白为什么只有那个人不符合我的代码。 –

+0

尝试使用jsonp而不是ajax – majestyc54

+0

如果我使用JSONP,那么请求的网站不需要将Access-Control-Allow-Origin头部设置为允许跨域请求?目前,随着WhateverOrigin我可以绕过这个限制。 –

相关问题