Получить ресурс перекрестного происхождения в nodejs из php

#php #node.js

#php #node.js

Вопрос:

Предположим, что есть два сервера serv1 и serv2. я пытаюсь получить xmlhttprequest из php в serv1 на узловом сервере в serv2. Мой код выглядит так:

 var express = require('express');
var app = express();
var cors = require('cors');
var XMLHttpRequest = require("xmlhttprequest").XMLHttpRequest;
app.use(function(req, res, next) {
    res.setHeader('Access-Control-Allow-Origin', 'serv1');
    res.setHeader('Access-Control-Allow-Methods', 'GET, POST, OPTIONS, PUT, PATCH, DELETE');
    res.setHeader('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With');
    res.setHeader('Access-Control-Allow-Credentials', true);
    next();
});
app.use(cors());
app.get('/session', function(req, res) {
    var u = "serv2/somephp.php";
    var xhr = new XMLHttpRequest();
    xhr.open("GET", u, true);
    xhr.withCredentials = true;
    xhr.onload = function() {
        console.log(xhr.responseText);
    };
    xhr.send();
})
app.listen(8165, function() {
    console.log('Express File Uploading server listening on port 8165');
})
 

Комментарии:

1. Настройки источника Cors должны быть реализованы на php, поскольку он обслуживает запрос от nodejs.

Ответ №1:

XMLHttpRequest не существует в node. Просто выполните простой http-запрос get с помощью модуля запроса :

 var request = require("request");
request.get({url: "https://www.example.com/a"},function(err, response, body){

});
 

Кроме того, домен должен быть определен в вашем URL:

  var u = "serv2/somephp.php";
 

Правила CORS должны быть установлены на целевом сервере (php server)