17

スタートアップ アプリケーション:

@SpringBootApplication
@EnableZuulProxy
public class ZuulServer {

     public static void main(String[] args) {
         new SpringApplicationBuilder(ZuulServer.class).web(true).run(args);
     }
 }

私のYAMLファイルは次のようなものです:

server:
   port:8080

spring:
   application:
      name: zuul

eureka:
client:
  enabled: true
    serviceUrl:
       defaultZone: http://localhost:8761/eureka/



zuul:
    proxy:
       route:
         springapp: /springapp

springapp と呼ばれるマイクロサービス アプリケーション (ポート 8081 上) があり、残りのサービスがいくつかあります。以下は私のクライアント UI アプリです。

    <html>
    <head>
        <title>TODO supply a title</title>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <script type="text/javascript" src="js/libs/jquery/jquery.min.js" ></script>
    </head>
    <body>
        <script type="text/javascript">
            $.ajax({
                url: 'http://localhost:8080/zuul/springapp/departments',
                type: 'GET'
            }).done(function (data) {
                consoe.log(data);
                document.write(data);
            });
        </script>        

    </body>
</html>

しかし、私は

XMLHttpRequest cannot load http://localhost:8080/zuul/springapp/departments. No
    'Access-Control-Allow-Origin' header is present on the requested
    resource. Origin 'http://localhost:8383' is therefore not allowed access.

この UI HTML5 アプリはhttp://localhost:8383/SimpleAPp/index.htmlにあります。CORS、CORS、CORS...助けてください。ところで、http://localhost:8080/zuul/springapp/departmentsは、ブラウザのアドレスバーにあると想定されるjsonリストを返します。ここのspring.ioブログは、zuulproxyがそれを処理するため、フィルターは必要ないと言っていますが、なぜそれが機能しないのかわかりません。

4

7 に答える 7

5

アプリケーションが で実行されているhttp://localhost:8383場合は、AJAX 呼び出しのみを行うことができますhttp://localhost:8383。Zuul はそれを変えませんし、変えることもできません。

Zuul ができることは、たとえばhttp://localhost:8383/zuul/へのリクエストをマッピングすることですhttp://localhost:8080/zuul/。ただし、ブラウザが呼び出すhttp://localhost:8383/zuul/springapp/departments必要があり、そのマッピングを構成する必要があります。

于 2015-02-23T14:21:11.447 に答える