2016-01-11 2 views
3

Я хочу написать скрипт PhantomJS, который позволяет тестировать на версии localhost и производственной версии веб-сайта (требуется имя хоста для локального хоста, не может работать на ip-адресе). Скрипт в основном просто сравнивает две версии: загружает локальную версию, рендерит на изображение, загружает версию производства, отображает изображение и сравнивает эти два. Теперь я использую файл хоста, для которого требуется много изменений и сохранения файла хоста (не очень хорошее решение, потому что оно влияет на других и когда-то было кэшировано)Изменение хост-файла PhantomJS или заголовок хоста

Существует другой способ использования заголовка узла, например:

прод: http://example.com

местные: http://127.0.01/ с хозяином: example.com

, которые имеют одинаковый результат с hostfile и более безопасным. Проблема заключается только в том, что основной html загружен локальной версией, ресурсом, css, статикой изображения является загрузка с использованием 127.0.0.1, которая не может решить ....

Мой вопрос: как я могу сообщить PhantomJS использовать заголовок узла для весь запрос?

ответ

4

Я нашел ответ: D, перехват события resourceRequest, мы можем изменить url или заголовок ресурса.

var targetHost= 'example.com'; 
 
var targetIP = '127.0.0.1'; 
 
var page = require('webpage').create(); 
 
page.onResourceRequested = function(request, network){ //Intercept request here, change url,header. 
 
    var newUrl = request.url.replace(targetHost, targetIP); 
 
    console.log('Intercepted change url to ', newUrl, targetHost); 
 
    network.setHeader('Host', targetHost); 
 
    network.changeUrl(newUrl); 
 
}; 
 
page.open(url, function() {});

Смежные вопросы