我创建了一个免费托管帐户,我获得了一个可以使用任何浏览器访问的免费域名。我可以在该网站上传文件。我已正确配置数据库。现在,我已经上传了以下php文件,其代码如下:
<?php
require_once('connection.php');
$sql = 'SELECT date FROM Khatams';
$result = $conn->query($sql);
$khatam_dates = array();
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
$khatam_dates[] = $row['date'];
}
} else {
//echo "0 results";
}
echo json_encode($khatam_dates, JSON_FORCE_OBJECT);
$conn->close();
?>
我可以直接从浏览器访问此文件,并按预期获取json对象。但是,当我使用以下代码发送Java的GET请求时:
URL url = new URL(SERVER_ADDRESS + file);
HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
InputStream in = new BufferedInputStream(httpURLConnection.getInputStream());
BufferedReader reader = new BufferedReader(new InputStreamReader(in));
StringBuilder stringBuilder = new StringBuilder();
String line, result;
try {
while ((line = reader.readLine()) != null) {
stringBuilder.append(line + "\n");
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
result = stringBuilder.toString();
System.out.println(result);
我收到以下回复:(我格式化了;未格式化转储字符串)
<html>
<body>
<script type="text/javascript" src="/aes.js">
</script>
<script>
function toNumbers(d){
var e=[];
d.replace(/(..)/g,function(d){e.push(parseInt(d,16))});
return e
}
function toHex(){
for(var d=[],d=1==arguments.length&&arguments[0].constructor==Array?arguments[0]:arguments,e="",f=0;f<d.length;f++)
e+=(16>d[f]?"0":"")+d[f].toString(16);
return e.toLowerCase()
}
var a=toNumbers("f655ba9d09a112d4968c63579db590b4"),b=toNumbers("98344c2eee86c3994890592585b49f80"),c=toNumbers("c32982e0cee9e5da81856753a7aef5ed");
document.cookie="__test="+toHex(slowAES.decrypt(c,2,a,b))+";
expires=Thu, 31-Dec-37 23:55:55 GMT;
path="/";
document.cookie="referer="+escape(document.referer);
location.href="http://ashubuntu.byethost9.com/fetch_khatam_dates.php?ckattempt=1";
</script>
<noscript>
This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support
<noscript>
</body>
</html>
这种反应的原因是什么?我对以下代码片段特别感兴趣:
<noscript>
This site requires Javascript to work, please enable Javascript in your browser or use a browser with Javascript support
<noscript>
答案 0 :(得分:3)
在将您重定向到实际页面之前,托管似乎正在设置某种跟踪Cookie。
尝试从Java访问 http://ashubuntu.byethost9.com/fetch_khatam_dates.php?ckattempt=1
,看看你是否可以通过这种方式解决问题。
编辑:看起来像您发布的网页来源中的?ckattempt=1
部分,可以计算重定向的次数以检查Cookie是否确实已设置。
您可能运气不好 - 这是您使用免费托管所支付的价格。我能想到的唯一方法就是让网站相信你已经设置了cookie(我不确定如何做到这一点,你必须让Java发送一个看似合理的cookie的正确名称。 HTTP标头)。