Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/435.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何绕过跨原产地政策_Javascript_Php_Same Origin Policy - Fatal编程技术网

Javascript 如何绕过跨原产地政策

Javascript 如何绕过跨原产地政策,javascript,php,same-origin-policy,Javascript,Php,Same Origin Policy,需要访问另一台服务器中JSON文件的移动应用程序。其显示跨原产地政策被阻止。那么,有没有办法绕过或访问该文件 您将其分类在PHP下。您最好使用PHP获取JSON,然后使用PHP创建JS所需的数据。 没有关于你的应用程序的更多信息,我在这里非常有限。 这是一个将json数据转换为JavaScript的非常典型的PHP示例: $json = json_decode(file_get_contents('http://example.com/data.jsn'),true); $JS = 'var d

需要访问另一台服务器中JSON文件的移动应用程序。其显示跨原产地政策被阻止。那么,有没有办法绕过或访问该文件

您将其分类在PHP下。您最好使用PHP获取JSON,然后使用PHP创建JS所需的数据。

没有关于你的应用程序的更多信息,我在这里非常有限。

这是一个将json数据转换为JavaScript的非常典型的PHP示例:

$json = json_decode(file_get_contents('http://example.com/data.jsn'),true);
$JS = 'var data = ';
foreach ($json as $key => $value){
  $JS .= "[$key,$value],"
}
$JS = substr($JS,0,-1) . ';';  // remove trailing comma, add semicolon



echo <<<EOT
<script type="text/javascript">//<![CDATA[
$JS
//]]>
</script>
EOT;
$json=json\u解码(文件获取内容('http://example.com/data.jsn",对),;
$JS='var data=';
foreach($json作为$key=>$value){
$JS.=“[$key,$value],”
}
$JS=substr($JS,0,-1)。;;;//删除尾随逗号,添加分号

echo使用标题功能。查看此链接


如前所述,您需要一个简单的php代理脚本

通过这种方式,您的服务器获取json文件,您只需从客户端访问服务器。这样javascript只处理同一个域

<?php
  header('Content-Type: application/json');
  echo file_get_contents('http://example.com/data.json');
?>
使用第二个示例,您可以尝试类似
http://localhost/proxy.php?file=somefile.json

HTACCESS方法

有关在服务器上使用htaccess文件的信息,请参阅下一页


标题集访问控制允许原点“*”


您有权访问其他服务器吗?CORS的存在是有原因的。因此,除非您有权访问目标服务器以更改CORS策略,否则您将无法绕过它。请尝试搜索“是”,我有权访问其他服务器,但我们无法在主应用程序中使用任何php代码,然后只需应用跨域头。。但是这仍然需要php或者使用htaccess文件来应用Header。这是一个很好的媒介,php可以代理现有的JSON请求并将其传递给用户。不需要混合PHP和JS,也不需要更改现有代码中除URL以外的任何内容。@JAAulde是“只是传递它”,而不是我所做的?我能看到PHP作为JS代理的唯一其他方法是使用AJAX,这太慢了,需要浏览器发出额外的HTTP请求。多年来,我发现混合使用PHP和JS会带来巨大的好处。简单,高效,快速,我喜欢这三个。这里是否可以使用oit,我不知道,信息还不够。我推断OP已经在使用AJAX(尽管我可能错了),并且可能是在应用程序的生命周期中不断重新加载数据的东西。如果CORS无法实现,服务器端代理是这种情况下的标准实现。我还将注意到,在构建
$JS
字符串时,应该避免手动创建JS数据,而使用JSON序列化应该取代它。前者容易出错,而且更难阅读。在本例中,数据已经是JSON,因此这也是额外的工作。我必须同意您的看法,OP很可能使用AJAX。如果发生了多个AJAX调用,或者用户交互改变了正在进行的AJAX调用,那么我的解决方案很快就会崩溃。我仍然喜欢宣传PHP和JS的融合。当需要的时候,它是伟大的。我从来没有见过任何代码像我这样做。我经常使用这种技术。不一定是JSON,而是将db数据输入JS。作为移动应用程序,它将用于windows phone和firfox操作系统,并且只支持html、css和JS,我们不能在应用程序中包含的主文件中使用任何php。那么,有什么相关的解决方案吗?这个答案需要一些背景信息和进一步的解释。这只有在你有权访问其他服务器的情况下才有效。实际上,人们对这样的事情投了反对票,因为它只值得一提。。这不是一个完整的答案。。而且,如果他们需要一个非PHP方法,那么这对他们的进一步发展没有帮助。。把你的答案扩大到一行/一条评论文字之外。萨姆。。。只需了解什么是值得回答的内容,什么是值得评论的内容。。。。这就是我要说的,首先。。。你编辑了它…你的第一个反应只是一行php。。。第二个链接仍然是指一个仍然只包含PHP的源页面。。。在这种情况下已被确定为不可用。再一次,你需要在你的答案上投入更多的精力。。无论哪种方式,都要表现出一些实际的努力或解释一些事情。。不要只是发布原始答案。因为它适用于移动应用程序,它将用于windows phone和firfox操作系统,并且只支持html、css和JS,我们不能在应用程序中包含的主文件中使用任何php。那么有什么相关的解决方案吗?是的。。我的错误,更正了。你托管应用程序的服务器应该有php,如果你的应用程序只使用本地文件,那么你将需要托管一个php文件,以便在服务器上执行此操作,或者更改托管json文件的服务器上的跨域标头。你也可以!你被PHP标签吸引住了。如果PHP解决方案不是一个选项,为什么会有人用PHP标记一个问题??顺便说一句,我真的很喜欢你的解决方案。非常简单的代理。如果没有别的,我相信你帮助过别人。这是PHP代理中最简单的一个,但同意这一点,因为它将帮助其他人。虽然在这种情况下,他可以在另一台服务器上使用HTACCESS文件,并允许设置文件跨域
<?php
  header('Content-Type: application/json');
  echo file_get_contents('http://example.com/data.json');
?>
<?php
  header('Content-Type: application/json');
  echo file_get_contents('http://example.com/'.$_REQUEST['file']);
?>
if (isset($_REQUEST['query'])) {
    $sQuery = http_build_query($_REQUEST);
    header('Content-Type: application/json');
    echo file_get_contents('https://www.example.com?'.$sQuery);
    exit;
}

?>
<FilesMatch ".(json|js|jsn)">
    Header set Access-Control-Allow-Origin "*"
</FilesMatch>