[英]Is it possible to download an html file from a given webpage using my local network/browser as if I downloaded it myself with javascript or nodejs?
[英]Is it possible to host HTML and Javascript from server, but have it send SOAP request over my local network?
我正在嘗試創建一個Web客戶端來控制我的Sonos揚聲器。 揚聲器連接到您的wifi,並充當各種流媒體服務的媒體服務器。
它通過對UPnP操作的SOAP發布請求進行操作。 我已經弄清楚了哪些SOAP請求可以做什么,但是我無法創建一個腳本來從Web瀏覽器控制它。
我學校的Web服務器使用Apache,並且我嘗試將以下行添加到腳本/網頁所在目錄的.htaccess
文件中,但無濟於事:
Header set Access-Control-Allow-Origin "*"
用戶是否可以通過任何方式訪問該網站(即使該網站由第三方服務器托管),輸入其目標設備的IP地址以及將請求從用戶的IP發送到目標設備?
如果不是,可以在瀏覽器中本地運行此腳本,以便不涉及第三方服務器嗎? 這會使它起作用嗎? 如果是這樣,我將如何做這些事情之一?
這是我到目前為止的代碼:
<html>
<head>
<title>SOAP JavaScript Client Test</title>
<script type="text/javascript">
function play() {
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('POST', 'http://192.168.1.197:1400/', true);
// build SOAP play request
var play =
'POST /MediaRenderer/AVTransport/Control HTTP/1.1' +
'ORIGIN: '
'HOST: 192.168.1.197:1400' +
'SOAPACTION: "urn:schemas-upnp-org:service:AVTransport:1#Play"' +
'CONTENT-TYPE: text/xml ; charset="utf-8"' +
'Content-Length: 356' +
'<?xml version="1.0" encoding="utf-8"?>' +
'<s:Envelope s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/">' +
'<s:Body>' +
'<u:Play xmlns:u="urn:schemas-upnp-org:service:AVTransport:1">' +
'<InstanceID>0</InstanceID>' +
'<Speed>1</Speed>' +
'</u:Play>' +
'</s:Body>' +
'</s:Envelope>';
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4) {
if (xmlhttp.status == 200) {
alert('done. use firebug/console to see network response');
}
}
}
// Send the POST request
xmlhttp.setRequestHeader('Content-Type', 'text/xml');
xmlhttp.send(play);
// send request
// ...
}
</script>
</head>
<body>
<form name="Demo" action="" method="post">
<div>
<input type="button" value="Play" onclick="play();" />
</div>
</form>
</body>
</html>
嘗試運行控制台時,我從控制台收到以下錯誤:
XMLHttpRequest無法加載http://192.168.1.197:1400/ 。 對預檢請求的響應未通過訪問控制檢查:請求的資源上不存在“ Access-Control-Allow-Origin”標頭。 因此,不允許訪問來源“ http://cs12students.dce.harvard.edu ”。
我的想法是讓用戶輸入“設備IP:端口”,或以某種方式在網絡上發現它(不確定是否可行,似乎是某種安全隱患),為它分配一個變量,然后然后將其插入每個腳本以執行不同的操作。
有人已經在stackoverflow上遇到了您的問題,請鏈接到答案: https : //stackoverflow.com/a/24285136/6512354
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.