2017-09-19 19 views
0

私は、1つのアプリケーションサービスで、/ apiの下にある仮想アプリケーションとしてJava APIを、/の下に私のフロントエンドのSPAを実行できますか?私のアプリケーション設定で同じAzure Appサービス内のjava APIと角SPA

  • 私は私が持っている仮想アプリケーション部でのTomcat 9
  • にWebコンテナ設定したバージョン8
  • へのJavaを設定しました:
    • 仮想ディレクトリ:/とパス:site \ wwwroot
    • 仮想ディレクトリ:/ apiとパス:site \ wwwroot \ api
    • 両方をアプリケーションとしてマークされている

私は、仮想アプリケーションの両方を展開した後、私はアプリサービスURLに行くとき、私は正確にフロントエンドを得るが、内に留まるAPIの呼び出しもあります数分間保留してから、500エラーで終了します。 APIに直接アクセスしようとすると、同じ500のエラーが発生します。

<applicationInitialization doAppInitAfterRestart="true"> 
      <add initializationPage="/api"/> 
      <add initializationPage="/api/health"/> 
      <add initializationPage="/api/info"/> 
     </applicationInitialization> 

を、私は、APIおよびSPAの両方をしたい、同じドメイン上にあるように:

APIは、春と私は設定していることのweb.configファイルで構築されました。現在、APIはどのドメインからでもアクセスできますが、制限はありません。

私は間違っていますか?どのように私はそれを動作させることができますか?

答えて

0

ウェブプロジェクトをAzure App Serviceにデプロイするときは、私の経験上、virtual directoryを作成する必要はありません。

ポータル上application settingsを設定した後、

enter image description here

あなたは、あなたのプロジェクトのはKUDUD:\home\site\wwwroot\webappsディレクトリの下にwar packageを生成し、アプリケーションを再起動して置くことができます。

enter image description here

リクエストのURLでご戦争のパッケージ名を追加することなく、このようなhttp://jaygong.azurewebsites.net/として、あなたはROOT.warに戦争のパッケージの名前を設定した場合、あなたはdomain nameから直接アプリケーションにアクセスできるようになりますのでご注意ください。

また、http://jaygong.azurewebsites.net/image/image.jpgなどのパスを介して静的ファイルに直接アクセスすることもできます。私の経験パー


更新答え

、あなたの春のブートアプリサービス内の別のアプリサービスAPIを呼び出すには二つの方法を使用することができます。

1。スプリングブートのフロントページはバックグラウンドメソッドを呼び出し、HTTPリクエストを介して別のアプリサービスAPIとそのメッセージ間でメッセージを転送し、その結果をフロントエンドに返します。 CORSの問題はこの方法では存在しません。

2.スプリングブートのフロントページは、別のアプリサービスAPIを直接呼び出します。あなたはこのスレッドで以下のjsを参照してください可能性があり Enable CORS AngularJS to send HTTP POST request

allowCrossDomain = function(req, res, next) { 
    res.header('Access-Control-Allow-Origin', '*'); 
    res.header('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS'); 
    res.header('Access-Control-Allow-Headers', 'Content-Type, Authorization, Content-Length, X-Requested-With'); 
    if ('OPTIONS' === req.method) { 
    res.send(200); 
    } else { 
    next(); 
    } 
}; 

app.use(allowCrossDomain); 

は、それはあなたのお役に立てば幸いです。

+0

私は、WARファイルではなくJARであるバックエンドにスプリングブートを使用しています。だから私はそれをjavaで始めることができるweb.configを持っている。私はすでにAPI用のアプリケーションサービスを持っていますが、機能していますが、同じアプリケーションサービスでフロントエンドと同じAPIを使用したいので、同じドメイン(CSRF/XSRFとCORSを実装したい)からサービスを提供できます。このようにして、APIはフロントエンドから相対パスのみでアクセスできます。 –

+0

@CristianCristian私の更新の回答をご覧ください。 –

関連する問題