我有nodejs服务器,并且在客户端上以避免CORS错误,我有一个带有file_get_contents的php文件,该文件回显了来自不同域的json
<?php
$json = file_get_contents('http://localhost/pixi/multidymy/getRanking.php');
echo $json;
问题是我的js正在获取php代码而不是json(未执行php代码)。如果我从URL打开php文件,则可以正常工作。我是否缺少一些标题?这是怎么回事?控制台中没有显示错误
const ranking = document.getElementById("ranking");
let xhr = new XMLHttpRequest();
xhr.open("GET", "/ranking.php", true); //<-- its in the local folder
xhr.addEventListener('load', function() {
if (this.status === 200) {
console.log('Result:');
console.log(this.responseText);
ranking.innerHTML = this.responseText;
} else {
ranking.innerHTML = "error";
}
})
xhr.send(null);
答案 0 :(得分:0)
您的XMLHTTPReqest已通过端口3000发送到NodeJS服务器。您的php在端口80下。最后,您的响应来自nodejs和运行php的服务器。由于跨站点脚本编写,您无法更改XMLHttpReqest的端口。我建议您使用nodejs通过http请求检索文件。
检查下面的链接,了解如何使用内置的http请求。
答案 1 :(得分:-1)
请检查一下nodeJs代码,并将以下行放入服务调用中。
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader("Access-Control-Allow-Headers", "X-Requested-With,content-type, sessionid");
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
例如函数名称,例如 getAllData
getAllData(req, res) {
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader("Access-Control-Allow-Headers", "X-Requested-With,content-type, sessionid");
res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
.
.
.
res.json({ 'IsSuccess' : false, 'StatusCode' : 500 , 'Message' : err.message, 'Data' : '' });
}