【问题标题】:Using ajax or jsonp to retrieve php source code使用ajax或jsonp检索php源码
【发布时间】:2015-06-09 20:57:45
【问题描述】:

有没有办法,使用ajax或jsonp,来检索一个php文件源代码?,请求是由与php文件相同的域发出的,我不希望服务器处理文件,我只是感兴趣通过检索文件的内容,可能有一个特定的标头用于请求服务器不处理请求的文件?

我找到的唯一解决方案是将文件后缀从.php更改为.txt/.html/etc,但这个解决方案是我最后的手段,如果有其他方法我将非常感激。

【问题讨论】:

  • 您是否尝试过更改 MIME 类型? PHP 是application/x-httpd-php。您是否在 $.ajax({}); 参数中也尝试过 dataType: 'html',
  • @D4V1D ajaxing 只不过是在服务器上 HTTPing 一个 .php 文件。该文件在服务器上执行。如果它是一个 .php 文件,并且您没有具体规则如何处理 .htaccess 或 ini 中的 .php 文件,它会按应有的方式响应。返回 data,而不是 PHP source 代码。
  • 感谢@RokoC.Buljan 的澄清。我实际上想知道 Ajax 调用的请求类型。那是常规的 GET 或 POST HTTP 所以文件仍然被解析。
  • 各位,谢谢,我想我已经得到答案了。
  • @D4V1D 完全正确。除非 serverknown 中它应该处理一个特定的 .php 文件,因为它是一个文本文件。在这种情况下,您将在响应中获得完整的 <?php 内容的正常预览。

标签: javascript php ajax jsonp


【解决方案1】:

您可以实现一个 php 包装器,您的 ajax 代码可以请求并传入您希望查看其内容的文件:

通过 ajax 请求:http://yourdomain.com/get_content.php?file=test.php

get_content.php:

<?php
if (isset($_GET['file'] && file_exists($_GET['file'])) {
    echo file_get_contents($_GET['file']);
}
?> 

请不要在生产模式下使用上面的代码,这只是一个想法如何处理您的问题。

【讨论】:

  • 是的,在生产环境中如果有人可以访问http://yourdomain.com/get_content.php?file=../../../../../../../etc/passwd 会怎样? :)
猜你喜欢
  • 2014-08-19
  • 2015-10-21
  • 2019-05-29
  • 1970-01-01
  • 1970-01-01
  • 2014-11-01
  • 2012-05-09
  • 2012-01-15
  • 1970-01-01
相关资源
最近更新 更多