2016-04-26 4 views
3

開発用にgrunt-connect-proxyを正しく設定し、CORSの問題を回避したいと考えています。grunt-connect-proxy設定がプロキシを使用しない

私はhttp://localhost:8080/mywebservice

  • でローカルTomcat上ヨーマン(v1.4.8)から作成されたクライアントアプリケーションを実行している

    • のREST Webサービスを持っている発電機は、ポート9000上で動作していることは、上記のWebサービスに接続します。

    私はNPMモジュールをインストール:

    >npm install grunt-connect-proxy --save-dev 
    [email protected] node_modules\grunt-connect-proxy 
    ├── [email protected] 
    └── [email protected] ([email protected], [email protected]) 
    

    私Gruntfile.js設定

    require('jit-grunt')(grunt, { 
        (...) 
        configureProxies: "grunt-connect-proxy" 
    }); 
    (...) 
    connect: { 
        options: { 
        port: 9000, 
        hostname: 'localhost', 
        livereload: 35729 
        }, 
        proxies: [ 
        { 
         context: ['/mywebservice'], 
         host: 'localhost', 
         port: 8080, 
         changeOrigin: true 
        } 
        ], 
        livereload: { 
        options: { 
         open: true, 
         middleware: function (connect) { 
         return [ 
          require('grunt-connect-proxy/lib/utils').proxyRequest, 
          connect.static('.tmp'), 
          (...) 
          connect.static(appConfig.app) 
         ]; 
         } 
        } 
        }, 
    (...) 
    } 
    
    grunt.registerTask('serve', 'Compile then start a connect web server', function (target) { 
    (...) 
        grunt.task.run([ 
         (...) 
         'configureProxies:server', 
         (...) 
        ]); 
    }); 
    

    クエリは、それがまだ起源http://localhost:9000で見られるように、プロキシを通過する音はありません。私は、次のエラーを受け取りました:

    XMLHttpRequest cannot load http://localhost:8080/xmlcompare-rs/xmlcompare. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:9000' is therefore not allowed access. 
    

    イサキがコマンドプリントを果たすものの

    Running "configureProxies:server" (configureProxies) task 
    Proxy created for: /mywebservice to localhost:8080 
    

    は、それがベルを鳴らしていますか?

  • 答えて

    1

    問題は、RESTサービスのサーバー構成から発生しているようです。 この例外を回避するには、CORSフィルタを使用します。

    https://tomcat.apache.org/tomcat-7.0-doc/config/filter.html#CORS_Filter

    の実装は、使用しているスタックによって異なります。

    私は助けてくれることを願っています。

    +1

    ありがとうございました。これは、バックエンドのCORSフィルタで動作します。しかし、私はchangeOriginオプションのおかげでそれが必要ないと思った。とにかくバージョン0.1.11(以降のバージョン)のリリースノートから見る_0.1.11ノード0.10でのWebSocketサポートの修正 - 1.1.4へのHTTPプロキシ依存のバンプ、サポートされていないHTTPプロキシオプションの削除(rejectUnauthorized、timeout、 changeOrigin)_ – kdefombelle

    関連する問題