- ベストアンサー
非同期xmlhttprequestでのポート指定
今、デスクトップアプリケーションをapacheを経由してブラウザで操作できるような仕組みを作っております。もとのデスクトップアプリがjavaで実装されており、そこではsocketを特定のポートでオープンしています。 serverSocket = new ServerSocket(3811); socket = serverSocket.accept(); そして、ブラウザの方ではYUIのスライダーを利用したUIをつくっており、そのスライダーの値が変更されると、 var httpObj = new XMLHttpRequest(); httpObj.open("POST","http://localhost:3811",true); httpObj.send("value="+val); というように送信しています。 現状ではc://*****/***/****.htmlという形で、apacheを介さずに、同じマシン上でアクセスした場合、メッセージングが正常に行われていることを確認することができたのですが、 http://localhost/****.htmlの形でapacheを経由してアクセスした場合、メッセージングができません。 onreadystatechangeも呼び出されなく、また、netstat等でコネクション確認をしてみましたが、まったくコネクションが貼られていない状態です。apacheがなんらかのフィルタリングをおこなっているようにも思えるのですが、様々な資料にあたってみましたが、まったくそれらしき記述を見つけることができずにいます。 どなたか、アドバイスをいただける方がいらっしゃいましたら、ヒントだけでも結構ですので、よろしくお願いいたします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (1)
- himajin100000
- ベストアンサー率54% (1660/3060)
お礼
調査していただきありがとうございます。じつは便宜上windowsで実行しているように書きましたが、OSXでsafariを利用しています。 結論からいいますと、この問題は最終的にはapache、ブラウザのかなり低レベルなところまで調査する必要があったので、別の方法で解決することにしました。 近年ではxmlhttprequestから別ホスト、別ポートへのリクエスト送信は不可とするようになっているようで、ie7でできなかったのも、その線ではないかと思われます。 解決策として実行したのは、apacheのProxyPassディレクティブを利用して、あくまで同ホスト、同ポートにリクエストをおくるのだが、apacheでそれをそのまま転送するという形をとりました。この対応で多少のレイテンシーが発生すると考えられますが、現状はさほど影響を感じません。今後調査していこうと思います。ネットワークモニタでもその際に、実際に監視してみようと思います。 このたびは貴重なアドバイスありがとうございました。