2016-08-14 8 views
-1

私は自宅で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!

+1

いいえ、意味はありませんが、回避策はたくさんあります。 phpでプロキシする、nw.jsでアプリケーションをビルドする、拡張機能を使う、コマンドライン引数でブラウザのセキュリティを無効にするなどの方法があります。 – dandavis

+0

ありがとう、ありがとう、[CorsEverywhere](https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/?src=search)のように見えるfirefoxアドオンはこの仕事をすることができます –

答えて

0

この場合、サーバーが作成されていないため、CORSの処理をスキップするようにブラウザに指示する方法はありますか。

ことが可能であったならば、私はCORSのものをスキップするように私のウェブサイトへの訪問者のブラウザを教えて、私は彼らのオンラインバンキングやウェブメールサービスからデータを読み込むだけでなく、そのみましょうことができ企業イントラネット。

+0

Thx、しかし、どのようにそれは訪問者の決定だったのですか?そしてあなたのサーバーからのcorsを無効にするのではないのですか? –

+0

私は理解しています。他には何も残っていませんが、[CorsEverywhere](https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/?src=search)を使ってブラウザを調整して、サーバーが私の十字架を受け入れると信じてください元の呼び出し... –

関連する問題