Почему js XHR получает код из локального файла php, а не выполняет его? - PullRequest
0 голосов
/ 08 июля 2019

У меня есть сервер nodejs и на стороне клиента, чтобы избежать ошибки CORS У меня есть php-файл с file_get_contents, который выводит json из другого домена

<?php
$json = file_get_contents('http://localhost/pixi/multidymy/getRanking.php');
echo $json;

Проблема в том, что мой js получает php-код вместо json (php-код не выполняется). Если я открою php файл с URL, он будет работать нормально. Я скучаю по некоторым заголовкам? В чем дело? В консоли не отображается ошибка

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);

Ответы [ 2 ]

0 голосов
/ 09 июля 2019

Пожалуйста, проверьте код 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' : '' });
}
0 голосов
/ 08 июля 2019

Ваш XMLHTTPReqest отправляется на сервер NodeJS через порт 3000. Ваш php находится под портом 80. В конце ваш ответ приходит от nodejs и сервера, на котором работает php.Вы не можете изменить порт XMLHttpReqest из-за межсайтового скриптинга.Я бы посоветовал вам использовать nodejs для получения файла с помощью http-запроса.

Проверьте ссылку ниже, как это сделать с помощью встроенного http-запроса.

https://nodejs.org/api/http.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...