2017-03-23 8 views
0

私はOctoprint Javascript API(http://docs.octoprint.org/en/master/jsclientlib/index.html)を使用して、学校プロジェクトのために一度に複数のプリンタを表示するダッシュボードを作成しています。これは私のOctoPiから完全に分離されたWebサーバー上で実行されます。データを取得するためにREST APIを使用していますが、ソケットを正しく動作させることはできませんでした。私はJavascript APIについて知り、基本的な要求に対してはうまくやっているが、ソケットと接続してプリンタのステータスに関する更新データを取得したい。非常に単純に、私は私のHTMLに以下の行を追加し、いくつかのテストを行っていますOctoprint Javascript APIソケットの問題

<script src="sockjs.min.js"></script> (Downloaded a copy of sockjs from their github page yesterday) 
<script src="packed-client.js"></script> (Downloaded this by opening octopi.local and copying the source) 
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.4/lodash.min.js"></script> 
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> 

<body> 
     <div id="test_area"></div> 

     <script> 
       OctoPrint.options.baseurl = (my ip here); 
       OctoPrint.options.apikey = (api key here); 

       OctoPrint.socket.connect(); 

       OctoPrint.socket.onMessage("*", function(message){ 
         document.getElementById('test_area').innerHTML = response; 
       }); 
     </script> 
</body> 

のonMessageハンドラは決してでも火災。

XMLHttpRequestがここにhttp://(my IP をロードすることはできません)/ sockjs /情報トン= 1490302299698:私はChromeでこのエラーが出ます?。要求の資格情報モードが 'インクルード'の場合、応答内の 'Access-Control-Allow-Origin'ヘッダーの値は ワイルドカード '*'であってはなりません。 Origin 'null'はアクセスできません。 XMLHttpRequestによって開始された 要求の資格モードは、 withCredentials属性によって制御されます。

CORSとSockJSに問題があるようです。この作業を取得する方法を

Request URL:http://(my ip here)/sockjs/info?t=1490302365251 
Request Method:GET 
Status Code:200 OK 
Remote Address:(ip here):80 
Referrer Policy:no-referrer-when-downgrade 
Response Headers 
view source 
Access-Control-Allow-Credentials:true 
Access-Control-Allow-Origin:* 
Cache-Control:no-store, no-cache, must-revalidate, max-age=0 
Content-Length:77 
Content-Type:application/json; charset=UTF-8 
Date:Thu, 23 Mar 2017 20:52:45 GMT 
Etag:"d88498e8b1e0e1a411f64eb3eb6e219315b36ef4" 
Server:TornadoServer/4.0.2 
Request Headers 
view source 
Accept:*/* 
Accept-Encoding:gzip, deflate, sdch 
Accept-Language:en-US,en;q=0.8 
Connection:keep-alive 
Cookie:session_P80=eyJfaWQiOnsiIGIiOiJNVGRrWm1OalpEZzRZV00xTkRNd1lqZzJOMkpsWkRCbU4yWTFaR1JpTmpZPSJ9fQ.C7W5Xg.DmKIY6AJktPrR8_8Es8wa9iBc10 
Host:(ip here) 
Origin:null 
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 

任意のアイデア:

これらは、ヘッダーですか?これは私ができる最も基本的な設定であり、機能しません。ありがとう!

答えて

0

申し訳ありませんが、問題は、私がブラウザで(Webサーバー経由ではなくfile://経由で)Webサイトを直接実行していたことに加えて、大きなサンプルコードからコピーされた小さなエラーメッセージ変数名、そして私の他のコードにあったJQueryのインポートをコピーするのを忘れてしまった)。 Octoprintには「*」を購読させたバグもありましたが、開発者によれば、次のバージョンで修正される予定です。要するに、Webサーバを起動し、新しいソフトウェアがリリースされたらそれを入手してください(1.3.3)。