2013-10-08 80 views
0

你能告訴我什麼是Node.js的相當於該代碼的PHP代碼:

<?php 
    $url = $_GET['url']; 
    $html = file_get_contents($url); 
    echo $html; 
?> 

我希望能夠做到這一點的原因,是因爲我想在iframe中打開外部域名頁面,並且能夠在沒有遇到的情況下操作iframe中的DOM 相同的域名策略

謝謝!

+2

你的意思是'node.js'? – Dai

+0

Node.js是服務器端,而不是客戶端。你爲什麼認爲這是可能的? –

+0

@CharlesAddis他是什麼時候說這是客戶的努力?他只是想創建一個託管在與他的網站相同的域上的服務器端代理,並且該代理將讀取遠程網頁。完全可能在PHP中。他只是想知道如何在Node中做到這一點。 –

回答

2

@BrandomWamboldt是正確的,你根本無法訪問其他域的DOM。

作爲一種解決方法,您可以讓自己的服務器下載該頁面並操作DOM。通過這種方式,您可以通過網域上的網址投放該網頁。

這並不是說這是個好主意,因爲您允許其他網站注入您傳遞給用戶的腳本。但這裏的更改其他網站的網頁和發送從您自己的域的響應,使用jsdom的例子:

var jsdom = require('jsdom'); 
function handler(req, res){ 
    jsdom.env(
    "http://stackoverflow.com/questions/19254525/php-echo-equivalent-in-node", 
    ["http://code.jquery.com/jquery.js"], 
    function (errors, window) { 
     window.$('body').prepend(
     window.$('<h1></h1>').text('Text inserted by Node') 
    ); 
     var doc = window.document; 
     var output = doc.doctype.toString()+doc.innerHTML; 
     res.setHeader('Content-Type', 'text/html'); 
     res.writeHead(200); 
     res.end(output); 
    } 
); 
}; 
require('http').createServer(handler).listen(3000); 

如果你不關心在服務器端的DOM你可以簡單地下載整遠程頁面http.requestrequest庫,然後發送頁面內容作爲您域的響應。

,這再次是壞的從安全角度來看,所以你或許應該尋找替代解決方案

+0

嗨,柏拉圖。感謝信息。還有一件事。我怎麼可以在客戶端放入iframe來自我的域名的網址。例如: