私は自宅でUPNP/DLNAブラウジングを行ってきました。UPnP/DLNAブラウジングでCORSを理解する
私がしているのは、curlを使用してサーバーとxslの処理を照会してHTMLページを解答から外すシェルスクリプトベースのアプローチです。
次へ私はこのすべてをjavascript /種類のインタラクティブブラウザページに組み込むことができると考えました。しかし、今はリクエストがブラウザによってプリフライトされているので、CORSの問題にぶつかりました(彼らはカールを使用しているときにプリフライトされておらず、サーバーはCORSを話さず、UPnPだけです)。 のUPnPツリーのルートを取得しようとしているいくつかの最も簡単なコード:...明らかに
<html>
<head>
<script language="javascript">
function newx() {
var h = new XMLHttpRequest();
h.open("POST", "http://hcds6106:50001/ContentDirectory/control", true);
h.onreadystatechange = processme;
h.setRequestHeader("SOAPACTION",'"urn:schemas-upnp-org:service:ContentDirectory:1#Browse"');
h.setRequestHeader("Content-Type", "text/xml; charset='utf-8'");
h.send('<?xml version="1.0" encoding="utf-8"?><s:Envelope xmlns:ns0="urn:schemas-upnp-org:service:ContentDirectory:1" s:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:s="http://schemas.xmlsoap.org/soap/envelope/"><s:Body><ns0:Browse><ObjectID></ObjectID><BrowseFlag>BrowseDirectChildren</BrowseFlag><Filter>*</Filter><StartingIndex>0</StartingIndex><RequestedCount>0</RequestedCount><SortCriteria /></ns0:Browse></s:Body></s:Envelope>');
}
function processme()
{
alert(this.status);
}
</script>
</head>
<body onload="newx();"/>
</html>
ブラウザ(Firefoxの47.0)
は、私は私のブラウザを伝えることができる任意の合理的な方法はありCross-Origin Request Blocked: The Same Origin Policy disallows reading
the remote resource at http://hcds6106:50001/ContentDirectory/control.
(Reason: CORS header 'Access-Control-Allow-Origin' missing).
ヒットサーバーがそれのために作られていないので、この場合CORSものをスキップしますか? Firefoxまたはその他の一般的なUserAgentの場合私はそれがブラウザなしでとてもシンプルにでき、ブラウザ内でインタラクティブにすることは不可能に近いと信じられません.... TIA!
いいえ、意味はありませんが、回避策はたくさんあります。 phpでプロキシする、nw.jsでアプリケーションをビルドする、拡張機能を使う、コマンドライン引数でブラウザのセキュリティを無効にするなどの方法があります。 – dandavis
ありがとう、ありがとう、[CorsEverywhere](https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/?src=search)のように見えるfirefoxアドオンはこの仕事をすることができます –