2016-09-23 6 views
0

OK VENDOR_API_SERVERというリモートサーバーがあり、さまざまなデータを取得するために私がヒットしています。私はMY_APP_SERVER上で、AJAXを使用してVENDOR_API_SERVERから/へのリクエストと応答を処理するjavascriptファイルを含むアプリケーションを実行しています。私はその後、上記のjavascriptファイルを<script>タグで埋め込むMY_USER_FACING_APPを持っています。 3つのアプリはすべて異なるホスト上で動作します。 javascriptファイルがVENDOR_API_SERVERへのREST呼び出しを行うと、MY_APP_SERVERから実行され、MY_USER_FACING_APPのページで応答データを利用できるようにしたいと思います。以下の設定では、JavaScriptファイルがMY_USER_FACING_APPから実行されています。これは、私が避けようとしているものです。 MY_APP_SERVERにリモートjavascriptファイルをページに埋め込む前にサーバ上で実行することは可能ですか?

req.js
URL(例):MY_USER_FACING_APPにhttp://my_app_server.io/js/req.js

var jqxhr = $.get("http://vendor_api_server.io/api/dothis", function() { 
    console.log('request made'); 
}) 
    .done(function() { 
    console.log('success - check log'); 
    }) 
    .fail(function() { 
    console.log('fail - wassup'); 
    }) 

results.html
URL(例):http://my_user_facing_server.io/search/results.html

<!doctype html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>Results</title> 
    <script src="http://my_app_server.io/js/req.js"></script> 
</head> 

<body> 
    <h1>Results</h1> 
</body> 
</html> 

私は、MY_APP_SERVERによって、MY_USER_FACING_APPに利用可能な応答データを作成する前にjavascriptファイルを実行することができません。MY_APP_SERVERをプロキシ/デリゲートとして使用するには安全で洗練された方法が必要だと思っていますが、私の頭の周り。それとも、私がやろうとしていることは、そのコアでちょうど巨大なハックになる可能性があります...私はこのタイプの開発には全く新しいので、わかりません。

洞察や知恵があれば誰でも教えてください。

+0

JavaScriptリクエストではなくYOUR_APP_SERVERでサーバー側のリクエストを作成してみませんか? –

+0

スクリプトは、my_user_facing_appの代わりにmy_app_serverに存在するのはなぜですか?それについて特別なのは何ですか? my_app_serverはまったく役に立ちますか? – Bergi

+0

はい、スクリプトが何をしても、あなたのサーバーも同様に動作します。しかし、単にブラウザ環境用のスクリプトを実行するだけではありません。 – Bergi

答えて

0

今のところ、私はjavascriptプラグインファイルを使って、MY_APP_SERVERにあるPHPページにAJAXリクエストを行います。そのページは、次にcURLを使用してVENDOR_API_SERVERにREST呼び出しを行い、返されたデータをjavascript/pluginファイルに送り返して、CUSTOMERS_USER_FACING_APP上で実行されているアプリケーションのDOMに操作および表示できるようにします。 MY_APP_SERVERに

plugin.js
URL(例):MY_APP_SERVERにhttp://my_app_server.io/plugin.js

var jqxhr = $.get("http://my_app_server.io/curl.php", function() { 
    console.log('request made'); 
}) 
    .done(function(data) { 
    console.log('success - check log'); 
    console.log('response data: %o', data); 
    }) 
    .fail(function() { 
    console.log('fail - wassup!'); 
    }) 


curl.php
URL(例):http://my_app_server.io/curl.php

<?php 
$ch = curl_init(); 

curl_setopt($ch, CURLOPT_URL,"http://vendor_api_server.io/api/dothis"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 
      "postvar1=value1&postvar2=value2&postvar3=value3"); 


// receive server response ... 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 

$server_output = curl_exec ($ch); 

curl_close ($ch); 

print $server_output; 

?> 


結果。CUSTOMERS_USER_FACING_APP
URL(例)上のhtml:http://customers_user_facing_server.io/search/results.html

<!doctype html> 
<html> 
<head> 
    <meta charset="UTF-8"> 
    <title>Results</title> 
    <script src="http://my_app_server.io/js/req.js"></script> 
</head> 
<body> 
    <h1>Results</h1> 
</body> 
</html> 

だから私はまだこれが最善の方法であることを確信していないが、それははリクエストの起源を保つの私の目標を達成しませんCUSTOMERS_USER_FACING_APPではなくMY_APP_SERVERからのAPIに渡します。

私がここでやったことは何でも自由に穴を開けてください。それは私にとって非常に "回避策"です。私は、あまり邪魔にならないような解決策を考えています。

関連する問題