当使用xmlhttprequest

时间:2017-10-27 05:26:21

标签: php ajax cors

大家好,请帮帮我。我写的PHP简单代码test.php。我只是在阅读cookie并显示它。当我在Chrome浏览器中执行以下网址时,我得到回复

https://www.domainname.com/cbscheck/test.php

响应

testa3433^| 1^|1^|0da1d48927ec9118d271cc6a4f0df3e90ee4d296^|1

我使用xmlhttprequest在html文件下面调用了相同的php网址,但我没有得到上述响应。

file:///G:/Hari/MyTaks/Chat/chatCheck.html

我的回答是空的。

当我使用$_COOKIE来电时,我的感知xmlhttprequest无效。请任何帮助我如何解决它。我在下面分享了代码

testCheck.htm

<html>
<body>
<div id = 'onlineUsers' class='bottomDiv'>
</div>
<script>

  var url = 'https://www.somedomain.com/cbscheck/test.php';
  var xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange=function() {
    if (this.readyState == 4 && this.status == 200) {       
        document.getElementById("onlineUsers").innerHTML = this.responseText;   
    }
  };
  xhttp.open("GET", url , true);
  xhttp.send();
</script>
</body>
</html>

test.php的

<?php
echo $_COOKIE["loginInfo"];
?>

3 个答案:

答案 0 :(得分:1)

您需要设置$ tox --recreate && tox 以使用xhttp.withCredentials = true;向目标服务器发送凭据(以及COOKIES)。有关详细信息,请查看docs

您遇到的下一个问题是XMLHttpRequest标题。您的服务器会发送Access-Control-Allow-Origin标题,这就是您的浏览器拒绝Access-Control-Allow-Origin: *的原因。 XMLHttpRequest标头表示您的服务器应用程序允许您将请求从前端发送到任何其他服务器。结合Access-Control-Allow-Origin: *这个非常大的漏洞,导致您网页上的恶意软件js脚本可以将用户的凭据发送到任何其他地方。这就是为什么您的浏览器拒绝您的请求。您应该将您的域名添加到xhttp.withCredentials = true标题并删除Access-Control-Allow-Originthis问题已经解决了这个问题。

答案 1 :(得分:0)

确保设置cookie的域和您正在进行ajax请求的域是相同的。另外,请检查cookie的URL路径。

浏览器只会将Cookie发送到域及其设置的网址路径(如果您不应用特定的跨域规则)。

答案 2 :(得分:-1)

我认为你必须在服务器上运行,如果你直接在浏览器中打开html就不会理解php代码,这就是为什么它不起作用。