C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

ツリー一括表示

異なるシステム間のWebサービスの呼び出し /passop (19/05/14(Tue) 12:18) #90929
Re[1]: 異なるシステム間のWebサービスの呼び出し /WebSurfer (19/05/14(Tue) 12:32) #90930
│└ Re[2]: 異なるシステム間のWebサービスの呼び出し /passop (19/05/14(Tue) 13:03) #90932
│  ├ Re[3]: 異なるシステム間のWebサービスの呼び出し /WebSurfer (19/05/14(Tue) 13:29) #90934
│  └ Re[3]: 異なるシステム間のWebサービスの呼び出し /WebSurfer (19/05/14(Tue) 14:01) #90937
│    ├ Re[4]: 異なるシステム間のWebサービスの呼び出し /PANG2 (19/05/14(Tue) 14:35) #90939
│    │└ Re[5]: 異なるシステム間のWebサービスの呼び出し /WebSurfer (19/05/14(Tue) 16:23) #90942
│    └ Re[4]: 異なるシステム間のWebサービスの呼び出し /passop (19/05/14(Tue) 14:53) #90940
│      └ Re[5]: 異なるシステム間のWebサービスの呼び出し /WebSurfer (19/05/14(Tue) 16:45) #90943
│        └ Re[6]: 異なるシステム間のWebサービスの呼び出し /passop (19/05/14(Tue) 17:22) #90944
│          ├ Re[7]: 異なるシステム間のWebサービスの呼び出し /WebSurfer (19/05/14(Tue) 17:44) #90945
│          │└ Re[8]: 異なるシステム間のWebサービスの呼び出し /passop (19/05/14(Tue) 18:17) #90947
│          │  └ Re[9]: 異なるシステム間のWebサービスの呼び出し /WebSurfer (19/05/14(Tue) 19:25) #90950
│          └ Re[7]: 異なるシステム間のWebサービスの呼び出し /PANG2 (19/05/14(Tue) 18:43) #90948
Re[1]: 異なるシステム間のWebサービスの呼び出し /PANG2 (19/05/14(Tue) 12:57) #90931
  └ Re[2]: 異なるシステム間のWebサービスの呼び出し /passop (19/05/14(Tue) 13:16) #90933
    └ Re[3]: 異なるシステム間のWebサービスの呼び出し /PANG2 (19/05/14(Tue) 13:55) #90936
      └ Re[4]: 異なるシステム間のWebサービスの呼び出し /キングダム (19/05/14(Tue) 20:40) #90951
        └ Re[5]: 異なるシステム間のWebサービスの呼び出し /passop (19/05/15(Wed) 09:07) #90956
          └ Re[6]: 異なるシステム間のWebサービスの呼び出し /PANG2 (19/05/15(Wed) 10:51) #90963
            ├ Re[7]: 異なるシステム間のWebサービスの呼び出し /せば (19/05/15(Wed) 11:16) #90965
            │└ Re[8]: 異なるシステム間のWebサービスの呼び出し /passop (19/05/15(Wed) 11:41) #90968
            └ Re[7]: 異なるシステム間のWebサービスの呼び出し /passop (19/05/15(Wed) 11:35) #90967
              └ Re[8]: 異なるシステム間のWebサービスの呼び出し /キングダム (19/05/15(Wed) 20:54) #90982
                └ Re[9]: 異なるシステム間のWebサービスの呼び出し /PANG2 (19/05/16(Thu) 14:37) #90996
                  └ Re[10]: 異なるシステム間のWebサービスの呼び出し /passop (19/05/16(Thu) 14:56) #90997
                    └ Re[11]: 異なるシステム間のWebサービスの呼び出し /PANG2 (19/05/16(Thu) 15:12) #90999
                      └ Re[12]: 異なるシステム間のWebサービスの呼び出し /passop (19/05/16(Thu) 16:26) #91000
                        └ Re[13]: 異なるシステム間のWebサービスの呼び出し /PANG2 (19/05/16(Thu) 18:55) #91002
                          └ Re[14]: 異なるシステム間のWebサービスの呼び出し /passop (19/05/17(Fri) 08:57) #91003
                            └ Re[15]: 異なるシステム間のWebサービスの呼び出し /PANG2 (19/05/17(Fri) 10:04) #91007
                              └ Re[16]: 異なるシステム間のWebサービスの呼び出し /passop (19/05/17(Fri) 10:46) #91009 解決済み


親記事 / ▼[ 90930 ] ▼[ 90931 ]
■90929 / 親階層)  異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (5回)-(2019/05/14(Tue) 12:18:29)

分類:[ASP.NET (VB)] 

以前、こちらのスレで質問させて頂いた件で
その解決策として、Webサービスを利用することにしました。

http://bbs.wankuma.com/index.cgi?mode=al2&namber=90870

そのWebサービスのサンプルを作成するときに
行き詰まったため、質問させて頂きます。

サンプルは以下のような構成にしました。

システムA (サーバー側)Webサービスを配置
システムB (クライアント側)JavaスクリプトにてWebサービスを呼び出す

システムAとシステムBが別サーバーの場合はシステムBのalertメッセージが表示されない
(サンプルでtestボタン入力しても応答なし※)

システムAとシステムBが同一サーバーの場合は正しく実行されます。
(サンプルでtestボタン入力でHello Worldと表示される※)

※システムAとシステムBのサーバーとは別のパソコンを使用して実行
ちなみにこのパソコンを利用してVisualStadioで実行した場合はエラーになります。
(サンプルでtestボタン入力で0 errorと表示)

システムAとシステムBが別サーバーの場合でも正しく動作するようにしたいのですが、
何かエラーになる原因を調査する方法はないでしょうか?

(サーバー側プログラム)

Imports System.Web.Services
Imports System.Web.Services.Protocols
Imports System.ComponentModel

' この Web サービスを、スクリプトから ASP.NET AJAX を使用して呼び出せるようにするには、次の行のコメントを解除します。
<System.Web.Script.Services.ScriptService()> _
<System.Web.Services.WebService(Namespace:="http://tempuri.org/")> _
<System.Web.Services.WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
<ToolboxItem(False)> _
Public Class WebService1


    Inherits System.Web.Services.WebService

    ''' <summary>
    ''' 共通関数クラス
    ''' </summary>
    Private TestCls As New TestClass

    <WebMethod()> _
    Public Function HelloWorld() As String
        Return "Hello World"
    End Function

End Class


(クライアント側プログラム)
<div style="width:400px; background-color:#ffffff; color:#000000;">
<input type="button" value="test" onclick="webservicetest()"/>
</div>

<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script type="text/javascript" src="http://code.jquery.com/jquery-migrate-1.2.1.min.js"></script>

<script type="text/javascript">
    //WebServiceのテスト
    function webservicetest() {
        var url = "http://ifc-server2012/nctest2/hu/HU0540.asmx";
        $.ajax({
            type: "POST",
            url: url + "/HelloWorld",
            data: null,
            contentType: "application/json; charset=utf-8",
            success: OnSuccessCall,
            error: OnErrorCall
        });
        function OnSuccessCall(response) {
            alert(response.d);
        }


        function OnErrorCall(response) {
            alert(response.status + " " + response.statusText);
        }
    }
  
 </script>

[ □ Tree ] 返信 編集キー/

▲[ 90929 ] / ▼[ 90932 ]
■90930 / 1階層)  Re[1]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1814回)-(2019/05/14(Tue) 12:32:08)
No90929 (passop さん) に返信

> システムA (サーバー側)Webサービスを配置
> システムB (クライアント側)JavaスクリプトにてWebサービスを呼び出す

システム A, B の違いが分からないのですが・・・

基本的に Ajax ではクロスドメインでの要求には制約があることはご存知ですか?
その制約に引っかかっているということはありませんか?
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90930 ] / ▼[ 90934 ] ▼[ 90937 ]
■90932 / 2階層)  Re[2]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (6回)-(2019/05/14(Tue) 13:03:23)
No90930 (WebSurfer さん) に返信
>
> システム A, B の違いが分からないのですが・・・
>
> 基本的に Ajax ではクロスドメインでの要求には制約があることはご存知ですか?
> その制約に引っかかっているということはありませんか?

システムA・・・動画から静止画をつくるシステム
システムB・・・その静止画を取り込んで紹介するシステム

こちらのスレでWebサービスを利用したらということでしたので、
そのサンプルを作成しております。

http://bbs.wankuma.com/index.cgi?mode=al2&namber=90870

おっしゃる通り、クロスドメイン制約にひっかかっているようです。
このようなシステムAとシステムBが別サーバーの場合に
Webサービスを利用するのは難しいのでしょうか?

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90932 ] / 返信無し
■90934 / 3階層)  Re[3]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1815回)-(2019/05/14(Tue) 13:29:27)
No90932 (passop さん) に返信

> このようなシステムAとシステムBが別サーバーの場合に
> Webサービスを利用するのは難しいのでしょうか?

いろいろ手はあると思います。例えば、

(1) ブラウザ ⇔ システム B の Web サーバー ⇔ システム A の Web サービスという
  構成にしてシステム B にシステム A の Web サービスへのサービス参照を追加し、
  普通に SOAP で通信する。

(2) システム B は Windows Forms などでも良いのであれば、(1) と同様にサービス参
  照を追加して普通に SOAP で通信する。JSON 文字列をやり取りしたいのであれば、
HttpClient とか HttpWebRequest を利用して Web サービスに要求をかけるする。

(3) どうしてもブラウザから異なるドメインのシステム A の Web サービスと Ajax で
  通信したいということであれば、JSONP とか CORS で対応する。
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90932 ] / ▼[ 90939 ] ▼[ 90940 ]
■90937 / 3階層)  Re[3]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1816回)-(2019/05/14(Tue) 14:01:01)
No90932 (passop さん) に返信

> システムA・・・動画から静止画をつくるシステム
> システムB・・・その静止画を取り込んで紹介するシステム

以前のスレッドを拝見しました。

システム A というのは ASP.NET Web アプリで、動画(.mp4 ファイル)が Web サーバーに保存されていて、
ユーザーがブラウザでシステム A にアクセスして動画をダウンロードして再生し、任意の場所で静止させて
そのスナップショットを撮るということですか?

コードを見ると、その時点ではスナップショット画像はブラウザにしかないように見えます。

そうだとすると、システム B をいかように作ろうと何ともならないように思いますけど。そのあたりどうす
るのですか?
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90937 ] / ▼[ 90942 ]
■90939 / 4階層)  Re[4]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (283回)-(2019/05/14(Tue) 14:35:51)
No90937 (WebSurfer さん) に返信
> コードを見ると、その時点ではスナップショット画像はブラウザにしかないように見えます。
>
> そうだとすると、システム B をいかように作ろうと何ともならないように思いますけど。そのあたりどうす
> るのですか?

私の回答は、canvasに描画したスナップショット画像をWebSurferさんの方法で自サーバにアップロードする
ということでしたが、無理でしょうか?

canvas の画像をアップロード
http://surferonwww.info/BlogEngine/post/2015/07/02/upload-image-drawn-on-html5-canvas.aspx

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90939 ] / 返信無し
■90942 / 5階層)  Re[5]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1817回)-(2019/05/14(Tue) 16:23:41)
No90939 (PANG2 さん) に返信
>
> 私の回答は、canvasに描画したスナップショット画像をWebSurferさんの方法で自サーバにアップロードする
> ということでしたが、無理でしょうか?

すみません、先のスレッドの PANG2 さんの回答は見ていませんでした。(質問者さんの一番最初の質問し
か見ていませんでした)

システム A の Web サーバーに何らかの手段でブラウザにある静止画像をアップロードすれば、システム A
の Web サーバーから取得する手段はあると思います。

でも、それならシステム B を介する必要はなくて、ユーザーはブラウザで直接システム A のWeb サーバー
にアクセスして保存された静止画像をダウンロードすれば済むと思うのですが・・・

質問者さんはよくわからない状態で迷走している感じです。
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90937 ] / ▼[ 90943 ]
■90940 / 4階層)  Re[4]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (8回)-(2019/05/14(Tue) 14:53:05)
No90937 (WebSurfer さん) に返信

> システム A というのは ASP.NET Web アプリで、動画(.mp4 ファイル)が Web サーバーに保存されていて、
> ユーザーがブラウザでシステム A にアクセスして動画をダウンロードして再生し、任意の場所で静止させて
> そのスナップショットを撮るということですか?
>
> コードを見ると、その時点ではスナップショット画像はブラウザにしかないように見えます。
>
> そうだとすると、システム B をいかように作ろうと何ともならないように思いますけど。そのあたりどうす
> るのですか?

システム構成は以下のようになっています。

システムA・・・サーバーA
システムB・・・サーバーB

それ以外にパソコン(タブレット)があって、
そのパソコンのクライアントのcanvasに描画しているので
サーバーBにアップロードできるものと考えていました。

無理でしょうか?

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90940 ] / ▼[ 90944 ]
■90943 / 5階層)  Re[5]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1818回)-(2019/05/14(Tue) 16:45:30)
No90940 (passop さん) に返信

> システム構成は以下のようになっています。
>
> システムA・・・サーバーA
> システムB・・・サーバーB
>
> それ以外にパソコン(タブレット)があって、
> そのパソコンのクライアントのcanvasに描画しているので
> サーバーBにアップロードできるものと考えていました。

一体どういうことを考えているのか分かりません。

このスレッドの質問を見る限り、

(1) Web サービスはシステム A の Web サーバーにある

(2) ユーザーはブラウザでシステム B の Web サーバーにアクセスする

(3) システム B の Web サーバーからブラウザに応答が返ってくる

(4) 応答に含まれる jQuery ajax のコードで、システム A の Web サービスにアクセスして
  "Hello World" という文字列(本番では静止画像データ?)を取得する

・・・ということのように見えます。

違います? 違うのでしたら、どこがどのように違うのか詳細に書いてください。

違わないとすると、何故「サーバーBにアップロード」という話になるのですか? システム A
の Web サーバーにアップロードしないと、上記 (1) 〜 (4) が成り立たないと思うのですが、
いかがですか?

失礼ながら、よくわからなくて迷走しているように思えます。全体的なシナリオ・ストーリー
を書いてください。



[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90943 ] / ▼[ 90945 ] ▼[ 90948 ]
■90944 / 6階層)  Re[6]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (9回)-(2019/05/14(Tue) 17:22:16)
No90943 (WebSurfer さん) に返信
>でも、それならシステム B を介する必要はなくて、ユーザーはブラウザで直接システム A のWeb サーバー
>にアクセスして保存された静止画像をダウンロードすれば済むと思うのですが・・・
>
>質問者さんはよくわからない状態で迷走している感じです。

説明が下手で申し訳ありません。

具体的には

システムAはWebRTCを利用したWebカメラのシステム
システムBはWebカメラでとった商品画像を確認するシステム
(サンプルでは動画から静止画をとるでしが・・・)

当初、システムBで運用していたのですが、
商品の現物を確認するため、写真にとるという考えで
Webカメラのシステムをつくることになりました。

そのため、商品を指定して写真を表示する必要があります。

システムAとシステムBの利用者が別々の場合もありますので、
単にシステムAでたくさんとった写真を参照できるだけでは不可です。

Webカメラのシステムはhttpsでしか利用できないため、
レンタルサーバーを利用しようと考えています。

システムAで動画から静止画像を作成後にダウンロードして、
システムBの方でその画像を取り込めば、できそうですが、
ダウンロードファルダから画像を探すのは間違いの原因となりそうなので
もっと違う方法がないかということで質問させて頂きました。

今までWebサービスは使用したことがなかったので、
こちらで試しにサンプルをつくったのですが、
"Hello World"が話をややこしくしたようです。

以上が簡単ではありますが、シナリオストーリーです。

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90944 ] / ▼[ 90947 ]
■90945 / 7階層)  Re[7]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1819回)-(2019/05/14(Tue) 17:44:02)
No90944 (passop さん) に返信

No90943 に対してきちんと返事してください。
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90945 ] / ▼[ 90950 ]
■90947 / 8階層)  Re[8]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (10回)-(2019/05/14(Tue) 18:17:06)
No90945 (WebSurfer さん) に返信

>No90943 に対してきちんと返事してください。

私の考えですが、以下のようになります。

(1) Web サービスはシステム A の Web サーバーにある
⇒ システム B の Web サーバーに必要と考えていました。
  (クロスドメインの場合はシステム AのWebサーバーにも必要なんですね)

(2) ユーザーはブラウザでシステム B の Web サーバーにアクセスする
⇒ 静止画像をとる人はシステム Aにアクセスする
  ※静止画像を参照する人はシステム Bを利用します。

(3) システム B の Web サーバーからブラウザに応答が返ってくる
⇒ システム B に静止画像をアップロードしたいです。

(4) 応答に含まれる jQuery ajax のコードで、システム A の Web サービスにアクセスして
 "Hello World" という文字列(本番では静止画像データ?)を取得する
⇒ 静止画像をアップロードした結果、成功したというメッセージを受け取りたいです。

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90947 ] / 返信無し
■90950 / 9階層)  Re[9]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ WebSurfer (1820回)-(2019/05/14(Tue) 19:25:21)
No90947 (passop さん) に返信

> 私の考えですが、以下のようになります。
>
> (1) Web サービスはシステム A の Web サーバーにある
> ⇒ システム B の Web サーバーに必要と考えていました。
>   (クロスドメインの場合はシステム AのWebサーバーにも必要なんですね)
>
> (2) ユーザーはブラウザでシステム B の Web サーバーにアクセスする
> ⇒ 静止画像をとる人はシステム Aにアクセスする
>   ※静止画像を参照する人はシステム Bを利用します。
>
> (3) システム B の Web サーバーからブラウザに応答が返ってくる
> ⇒ システム B に静止画像をアップロードしたいです。
>
> (4) 応答に含まれる jQuery ajax のコードで、システム A の Web サービスにアクセスして
>  "Hello World" という文字列(本番では静止画像データ?)を取得する
> ⇒ 静止画像をアップロードした結果、成功したというメッセージを受け取りたいです。

そのレスを見ると話が通じるとは思えません。

仕事でやっているのですよね? 上司、先輩に聞きましょう。聞けない環境にあるというなら
それは組織として製品品質を担保することができないということです。


[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90944 ] / 返信無し
■90948 / 7階層)  Re[7]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (284回)-(2019/05/14(Tue) 18:43:02)
No90944 (passop さん) に返信
> 今までWebサービスは使用したことがなかったので、
> こちらで試しにサンプルをつくったのですが、
> "Hello World"が話をややこしくしたようです。

逆です。
Hello Worldが動かなったのが本題ですよね。
まずは、問題を解決しましょう。
そのあと、この仕組をどう活かせるか考えればよいのでは?

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90929 ] / ▼[ 90933 ]
■90931 / 1階層)  Re[1]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (281回)-(2019/05/14(Tue) 12:57:17)
No90929 (passop さん) に返信

> システムAとシステムBが別サーバーの場合でも正しく動作するようにしたいのですが、

こちらでクロスドメインを意識した回答をしています。
http://bbs.wankuma.com/index.cgi?mode=al2&namber=90870
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90931 ] / ▼[ 90936 ]
■90933 / 2階層)  Re[2]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (7回)-(2019/05/14(Tue) 13:16:58)
No90931 (PANG2 さん) に返信
>こちらでクロスドメインを意識した回答をしています。
>http://bbs.wankuma.com/index.cgi?mode=al2&namber=90870

PANG2さん申し訳ありませんが、理解できておりませんでした。

今回のWebサービスのサンプル(HelloWorld)の場合でしたら、
どのようにすればクロスドメインを意識したWebサービスになるのでしょうか?

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90933 ] / ▼[ 90951 ]
■90936 / 3階層)  Re[3]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (282回)-(2019/05/14(Tue) 13:55:16)
2019/05/14(Tue) 13:58:10 編集(投稿者)

No90933 (passop さん) に返信

> どのようにすればクロスドメインを意識したWebサービスになるのでしょうか?

■ブラウザ
$.ajax({
url: "/HelloWorldB", //自サーバ

■システムB
<WebMethod()> _
Public Function HelloWorldB() As String
Return システムA.HelloWorldA() 'システムAのHelloWorldAメソッドを呼ぶ
End Function

■システムA
<WebMethod()> _
Public Function HelloWorldA() As String
Return "Hello World"
End Function

クロスドメインはWebサーバ側で行う。
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90936 ] / ▼[ 90956 ]
■90951 / 4階層)  Re[4]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ キングダム (23回)-(2019/05/14(Tue) 20:40:31)
組織として製品品質を担保することができないという結論を出されたかたがおられるようですが
議題は異なるシステム間のWebサービスの呼び出しをどうしますかってことなので
そちらの話に戻した方が良いと思います

方針決めて課題を一つずつ解決するだけですね

・システムAで画像を作ります
・システムBで画像を見ます
・システムAとシステムBで画像を連携したいです

ということですよね

PANG2さんが示されてるように
システムAで画像を作ってシステムAのサーバーにアップロード
システムAのサーバーサイドのプログラムからシステムBのWebサービスを呼ぶ
という方針でいんじゃないかと思います

あとは作業を細分化して片付けるだけです
・システムAで画像を作る
・システムAのサーバーに画像をアップロード
・システムAのサーバーサイドのプログラムからシステムBのWebサービスを呼ぶ

やってみてできなかったわからなかったところがあれば
また聞いていただくのがいんじゃないかと

一応ですが私はpassopさんの質問が下手だとは思いませんでした
何をやろうとしてるのかよくわかりますし何をやったのかもよくわかりました
一部の声の大きい人がネガティブなことを言ってしまうとそれが総意だと
思われかねないのでそんなこと全然ないですよということをお伝えしておきます

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90951 ] / ▼[ 90963 ]
■90956 / 5階層)  Re[5]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (12回)-(2019/05/15(Wed) 09:07:15)
No90951 (キングダム さん) に返信

今回のトピックと前回のトピックでシステムAとシステムBが入れ替わっていて、
WebSurferさんの回答のときにシステムAとシステムBを逆で回答しまい、
WebSurferさんを混乱させてしまったようです。

WebSurferさん、どうも申し訳ありませんでした。

もう1度、前提を以下のように戻します。

(前提)
・システムAで画像を見ます。
・システムBで画像を作ります。
・システムAとシステムBで画像を連携したいです。

システムA・・・社内サーバー
システムB・・・公開サーバー

(1) システムAには静止画像をアップロードするWebサービスがあります。
(2) システムBにはシステムAのWebサービスを呼び出すWebサービスがあります。
(3) ユーザーは画像を作るため、ブラウザでシステムBの Web サーバーにアクセスする

このときにシステムAのWebサービスは公開されていないため、
システムBのサーバーサイドのプログラムからシステムAのWebサービスを呼ぶことは
不可能ですよね。

システムAのWebサーバーが公開されていないことを
前提に入れてなくて、重ね重ね申し訳ありませんでした。

WebSurferさんから提案のあった、
以下の方法に方針を変えようと考えていますが、
どうでしょうか?

>(3) どうしてもブラウザから異なるドメインのシステム A の Web サービスと Ajax で
> 通信したいということであれば、JSONP とか CORS で対応する。

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90956 ] / ▼[ 90965 ] ▼[ 90967 ]
■90963 / 6階層)  Re[6]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (285回)-(2019/05/15(Wed) 10:51:52)
No90956 (passop さん) に返信
> (前提)
> ・システムAで画像を見ます。
> ・システムBで画像を作ります。
> ・システムAとシステムBで画像を連携したいです。

わけ分からなくなった。
何らかの事情でMP4ファイルを公開サーバに置くとして、
「画像を見ます」のページを公開サーバに置く理由はなんでしょうか?

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90963 ] / ▼[ 90968 ]
■90965 / 7階層)  Re[7]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ せば (16回)-(2019/05/15(Wed) 11:16:08)
> わけ分からなくなった。
> 何らかの事情でMP4ファイルを公開サーバに置くとして、
> 「画像を見ます」のページを公開サーバに置く理由はなんでしょうか?

画像を見ますは社内サーバーなのでは?
とりあえず、ネットワーク構成が良くわからないので、どう答えるべきか迷う所ですが。。

とりま、JSONPはブラウザからのアクセスになるので、社内サーバーは公開されないようでしょうし、実現は不可能なのではと思います。
ブラウザ(サーバーB)→アップロード→サーバーA

No.90936
No.90943

に書いてあるように
ブラウザ(サーバーB)→アップロード→サーバーB→サーバーA
とするのが一番楽かと、、

ただ、前スレッドでは、サーバーAとサーバーBが同一セグメントに居ないと書いてあったのが不安を煽ります。
社内にインフラ屋さんが居るなら一度相談してみては?

passopさんへ
クロスドメインを考える際にはブラウザがどのサーバーからのレスポンスを表示して、どこに対してリクエストするのかを意識しないと
混乱すると思いますよ。

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90965 ] / 返信無し
■90968 / 8階層)  Re[8]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (14回)-(2019/05/15(Wed) 11:41:36)
No90965 (せば さん) に返信
>>わけ分からなくなった。
>>何らかの事情でMP4ファイルを公開サーバに置くとして、
>>「画像を見ます」のページを公開サーバに置く理由はなんでしょうか?
>
> 画像を見ますは社内サーバーなのでは?
> とりあえず、ネットワーク構成が良くわからないので、どう答えるべきか迷う所ですが。。
>
> とりま、JSONPはブラウザからのアクセスになるので、社内サーバーは公開されないようでしょうし、実現は不可能なのではと思います。
> ブラウザ(サーバーB)→アップロード→サーバーA
>
> No.90936
> No.90943
>
> に書いてあるように
> ブラウザ(サーバーB)→アップロード→サーバーB→サーバーA
> とするのが一番楽かと、、
>
> ただ、前スレッドでは、サーバーAとサーバーBが同一セグメントに居ないと書いてあったのが不安を煽ります。
> 社内にインフラ屋さんが居るなら一度相談してみては?
>
> passopさんへ
> クロスドメインを考える際にはブラウザがどのサーバーからのレスポンスを表示して、どこに対してリクエストするのかを意識しないと
> 混乱すると思いますよ。
>

このトピックスを混乱させている原因になっているようで
反省しております。

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90963 ] / ▼[ 90982 ]
■90967 / 7階層)  Re[7]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (13回)-(2019/05/15(Wed) 11:35:41)
No90963 (PANG2 さん) に返信

>何らかの事情でMP4ファイルを公開サーバに置くとして、
>「画像を見ます」のページを公開サーバに置く理由はなんでしょうか?

今回のトピックと前回のトピックでシステムAとシステムBが入れ替わっていて、
混乱させてしまい、申し訳ありません。

「画像を見ます」のページは公開サーバでなく、社内サーバーのシステムです。

・システムAは社内サーバーでWebカメラでとった静止画を確認するシステム
・システムBは公開サーバーでWebRTCを利用したWebカメラのシステム

サンプルはMP4ファイルになっていましたが、
ソースが複雑になるため、簡略化するために
MP4を使用してJavaScriptサンプルを作成しました。

実際はMPファイルはサーバーには置かずに静止画のみ置くことを
想定しています。

反対にシステムBを公開サーバーに置く理由は
WebRTCがSSL(httpsのアドレス)しか対応していないためです。

「画像を見ます」のページを社内サーバに置く理由は
システムBで商品画像の静止画をとって、
システムAで商品名を指定して静止画を表示して、
社内の人が商品が間違いないか確認するためです。
(間違い防止)
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90967 ] / ▼[ 90996 ]
■90982 / 8階層)  Re[8]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ キングダム (27回)-(2019/05/15(Wed) 20:54:23)
No90967 (passop さん) に返信

なるほど社内サーバで画像を見る
公開サーバで画像を作る

社内サーバから公開サーバにリクエストを送るのはOK
社内サーバ -> 公開サーバ

公開サーバから社内サーバにリクエストを送るのはNG
公開サーバ -> 社内サーバ

ということで
社内サーバから公開サーバにJSONPでリクエスト投げようと
してるってわけですね、良さそうな気がしますけどね

JSONで画像をやりとするのはどうするんですかね
Base64でエンコードしちゃえばテキストになるんで
そのへんはできそうな気がしますね

やってみたらいんじゃないですかね
社内サーバで画像を見るごとに公開サーバにリクエスト投げるのは
時間がかかるから嫌なのよということであればバッチを作って
まとめて取得しておく的なこともできそうですね

いろいろ言って話を爆発させたらいけないので
JSONPでやってみるということで良いと思いますよ
できなかったらまた考えれば良いですしあたって砕けろです
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90982 ] / ▼[ 90997 ]
■90996 / 9階層)  Re[9]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (286回)-(2019/05/16(Thu) 14:37:22)
2019/05/16(Thu) 14:38:23 編集(投稿者)

アップロードボタンを押したとき別窓を開くのはどうですか?


隠しフィールドに必要な値を代入して、隠しformをsubmitする。
<form method="post" action="社内サーバー/画像を登録します頁" target="_blank"> //別窓にクロスドメインポスト
<input type="hidden" name="title">
<input type="hidden" name="base64string">
</form>

画像を登録します頁では、
タイトルとBASE64文字列を受け取り、

画像を登録しました。
閉じるボタン

を応答。
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90996 ] / ▼[ 90999 ]
■90997 / 10階層)  Re[10]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (15回)-(2019/05/16(Thu) 14:56:05)
No90996 (PANG2 さん) に返信

> 2019/05/16(Thu) 14:38:23 編集(投稿者)
>
> アップロードボタンを押したとき別窓を開くのはどうですか?
>

以下のような前提でよろしいのでしょうか?

(前提)
・システムAで画像を見ます。
・システムBで画像を作ります。
・システムAとシステムBで画像を連携したいです。

システムA・・・社内サーバー
システムB・・・公開サーバー

(1) システムAには静止画像をアップロードするWebサービスがあります。
(2) システムBにはシステムAのWebサービスを呼び出すWebサービスがあります。
(3) ユーザーは画像を作るため、ブラウザでシステムBの Web サーバーにアクセスする
(4) 画像作成後、アップロードボタンを押したら、必要な値がセットされた隠しformをsubmitする

上記の通りの場合に何故、クロスドメイン問題を解決できるのですか?

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90997 ] / ▼[ 91000 ]
■90999 / 11階層)  Re[11]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (287回)-(2019/05/16(Thu) 15:12:14)
2019/05/16(Thu) 15:43:35 編集(投稿者)

Webサービスは関係ありません。
<form>によるPOSTだけで実装します。

■システムA

以下のページがあります。

画像を登録します.html

<form method="post">
タイトル<input type="text" name="title"><br>
画像文字列<input type="text" name="base64string">
<input type="submit" value="登録します">
</form>

submitしたら

画像を登録しました。
閉じるボタン

を応答。

■システムB

アップロードボタンを押したら、必要な値がセットし

システムA/画像を登録します.html

に向けた隠しフォームをsubmitします。

> 何故、クロスドメイン問題を解決できるのですか?

Ajaxによるクロスドメインポストではなく
formのsubmitによるクロスドメインポスト
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 90999 ] / ▼[ 91002 ]
■91000 / 12階層)  Re[12]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (16回)-(2019/05/16(Thu) 16:26:52)
No90999 (PANG2 さん) に返信
> 2019/05/16(Thu) 15:43:35 編集(投稿者)
>
> Webサービスは関係ありません。
> <form>によるPOSTだけで実装します。
>

javascript クロスドメインpostで検索したら、
以下の2つのページを見つけました。

A.Javascriptで外部URLにPOSTするには?
https://teratail.com/questions/13612

B.JavaScript だけでクロスドメインで POST メソッドを送る方法
http://www.otchy.net/20090923/send-post-method-to-cross-domain-only-use-javascript/

システムBからシステムAの呼び出し方法はB.を参考にすればいいのですか?

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 91000 ] / ▼[ 91003 ]
■91002 / 13階層)  Re[13]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (288回)-(2019/05/16(Thu) 18:55:44)
No91000 (passop さん) に返信
> B.JavaScript だけでクロスドメインで POST メソッドを送る方法
> http://www.otchy.net/20090923/send-post-method-to-cross-domain-only-use-javascript/
>
> システムBからシステムAの呼び出し方法はB.を参考にすればいいのですか?

私が提示したのは、別窓(form target="_blank")にクロスドメインポストする方法です。
iframeを使った方法を検討するのであれば、ご自由にどうぞ。
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 91002 ] / ▼[ 91007 ]
■91003 / 14階層)  Re[14]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (17回)-(2019/05/17(Fri) 08:57:00)
No91002 (PANG2 さん) に返信
>
> 私が提示したのは、別窓(form target="_blank")にクロスドメインポストする方法です。
> iframeを使った方法を検討するのであれば、ご自由にどうぞ。

いえ、iframeでの呼び出し方法を使いたいわけではなくて、
余りJavaScriptから別窓を使って呼出ししたことがなかったため、
PANG2さんが考えるイメージを確認したかったのです。

「javascript クロスドメインpost」で検索で見つけた
A.の呼び出し方法にもB.を参考するリンクがあったので、
B.の呼び出し方法と思ったわけです。

再度、「javascript url別窓」で検索して、見つけたのですが、
システムBからシステムAの呼び出し方法は以下のページを
参考にすればいいのですか?

https://clouds.tokyo/blog/js_post_open/

[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 91003 ] / ▼[ 91009 ]
■91007 / 15階層)  Re[15]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ PANG2 (289回)-(2019/05/17(Fri) 10:04:45)
2019/05/17(Fri) 10:06:41 編集(投稿者)

No91003 (passop さん) に返信
> 再度、「javascript url別窓」で検索して、見つけたのですが、
> システムBからシステムAの呼び出し方法は以下のページを
> 参考にすればいいのですか?
>
> https://clouds.tokyo/blog/js_post_open/

なるほど!
window.openで別窓のサイズ指定とかできるので、私よりよい方法ですよ。
[ 親 90929 / □ Tree ] 返信 編集キー/

▲[ 91007 ] / 返信無し
■91009 / 16階層)  Re[16]: 異なるシステム間のWebサービスの呼び出し
□投稿者/ passop (18回)-(2019/05/17(Fri) 10:46:56)
No91007 (PANG2 さん) に返信
>
> なるほど!
> window.openで別窓のサイズ指定とかできるので、私よりよい方法ですよ。

また、わからないことがありましたら、別のトピックスで挙げさせて頂きます。
PANG2さんの「formによるクロスドメインpost」で検討を進めていきます。

キングダム さん
PANG2さんのアイデアがシンプルでかつわかりやすかったので
先に検討を進めさせて頂きました。
JSONPなどのレスに回答せずに申し訳ありませんでした。

他の皆様もたくさんのアイデアをどうもありがとうございました。


解決済み
[ 親 90929 / □ Tree ] 返信 編集キー/


管理者用

- Child Tree -