今、デスクトップアプリケーションを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がなんらかのフィルタリングをおこなっているようにも思えるのですが、様々な資料にあたってみましたが、まったくそれらしき記述を見つけることができずにいます。
どなたか、アドバイスをいただける方がいらっしゃいましたら、ヒントだけでも結構ですので、よろしくお願いいたします。
No.2ベストアンサー
- 回答日時:
おもしろそうだったので実験してみました。
結果 ie5.5、ie6 はできました。ie7はできません。(win)
mozilla系はできません
ポート指定でエラーになっているようです。
この手のデバッグは(http://localhost)では無理です。
サーバーとクライアントを別にして、ネットワークモニタを使うと原因究明が早いです。
調査していただきありがとうございます。じつは便宜上windowsで実行しているように書きましたが、OSXでsafariを利用しています。
結論からいいますと、この問題は最終的にはapache、ブラウザのかなり低レベルなところまで調査する必要があったので、別の方法で解決することにしました。
近年ではxmlhttprequestから別ホスト、別ポートへのリクエスト送信は不可とするようになっているようで、ie7でできなかったのも、その線ではないかと思われます。
解決策として実行したのは、apacheのProxyPassディレクティブを利用して、あくまで同ホスト、同ポートにリクエストをおくるのだが、apacheでそれをそのまま転送するという形をとりました。この対応で多少のレイテンシーが発生すると考えられますが、現状はさほど影響を感じません。今後調査していこうと思います。ネットワークモニタでもその際に、実際に監視してみようと思います。
このたびは貴重なアドバイスありがとうございました。
No.1
- 回答日時:
私は実験していません。
(ネットワークプログラミングの経験が無いため)他のブラウザ含めどうなるか試してはいない。
しかし、IEを使っているなら,
例えばMSDNを見ると以下のように書かれています
http://msdn2.microsoft.com/en-us/library/ms53664 …
Security Alert : Cross-domain, cross-port, and mixed protocol requests are not allowed. The sUrl parameter may only specify XML data files in the same domain, using the same port and protocol method, as that from which the page is served.
セキュリティ警告:クロスドメイン・クロスポート・および複数のプロトコルの混在は許可されていない。sURLパラメータはそのページが提供されたのと同一ドメイン,同一ポート,同一プロトコルの同一メソッドを使ってXMLファデータファイルを指定するのみである。
という記述があります。
====
ローカルファイルで何故出来たかは俺は良く解らん。解らんばかりですまんけど、参考になれば。
ご指摘ありがとうございます。
クロスポートのメッセージングが禁止されている件ですが、近年どのブラウザもそうなっているようですね。上記でもうしあげましたが、わたしはsafariを使っていました。
ほんと、なんでローカルファイルでは実行可能なのか、さっぱりわかりません。apacheのソースコードをみることしかないのかも知れないとも思いましたが、さすがにそこまでは手に負えないということで、上記の対応を行いました。
このたびは参考になるご意見、本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ApachePOIでエラー
-
jspプログラムについて
-
JSPのクラスをコンパイルできな...
-
Apache-SSLとmod_sslの違いは?
-
apache2.2-tomcat6.0の連携のエ...
-
ant1.7.1がほしい
-
Eclipseでサーブレットを使用す...
-
Eclipseで、プロジェクト名のと...
-
html上で、バッチやexeファイル...
-
マイクラjavaでForgeを入れたい...
-
classファイルについて
-
eclipseでスタックサイズを変更...
-
eclipseで1ファイルの警告を100...
-
この <windows.h> はどこに在る...
-
Eclipse(JAVA)のデバッグで他...
-
JAVAにのeclipseに関する質問で...
-
Google Colabでimport soxが出...
-
コミット前の更新データをチェ...
-
split関数で区切り文字がない場合
-
.jarファイルの中身って書き換...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
JSPのクラスをコンパイルできな...
-
自分で作成したservletを起動す...
-
eclipseでTomcat起動時にエラー...
-
isapi_redirect.dllのダウンロード
-
ApachePOIでエラー
-
jspプログラムについて
-
IISとローカルと別サーバのTomc...
-
Eclipseでサーブレットを使用す...
-
tomcatの不具合
-
javax.servlet.ServletExceptio...
-
apache2.2-tomcat6.0の連携のエ...
-
No collection foundと出てしま...
-
Tomcatが起動できない
-
非同期xmlhttprequestでのポー...
-
strutsでトップページアクセス...
-
jsp:useBean の使い方???
-
servletについて
-
POIの導入
-
tomcatとapacheを何で一緒に使...
-
Tomcat5.0.30とApache2.2.3の連...
おすすめ情報