【问题标题】:ng build --prod allow origin missing (404 forbidden)ng build --prod 允许缺少来源(404 禁止)
【发布时间】:2018-01-18 15:55:12
【问题描述】:

我在我的应用程序之外调用 REST APIS,我总是得到 ​​p>

Allow-Origin' 标头出现在请求的资源上(403 禁止)。

我将我的 tomcat 服务器配置为允许来源。

ng 服务 --proxy-config proxy.conf.json

它工作正常,但之后

ng 构建 --prod

我遇到了这个问题。那么为什么它使用 ng serve 而不是 ng build 呢?这在我的服务器端不是问题,否则它不适用于 ng 服务器或 http 请求等。我可以在这里做什么?

web.xml

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
         version="3.0" metadata-complete="true">

  <display-name>Apache TomEE</display-name>

  <servlet>
    <servlet-name>LoaderServlet</servlet-name>
    <servlet-class>org.apache.tomee.loader.LoaderServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet>
    <servlet-name>ServerServlet</servlet-name>
    <servlet-class>org.apache.openejb.server.httpd.ServerServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>ServerServlet</servlet-name>
    <url-pattern>/ejb/*</url-pattern>
  </servlet-mapping>

  <servlet>
    <servlet-name>InstallerServlet</servlet-name>
    <servlet-class>org.apache.tomee.webapp.installer.InstallerServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>InstallerServlet</servlet-name>
    <url-pattern>/installer</url-pattern>
  </servlet-mapping>

  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
  </welcome-file-list>

  <security-constraint>
    <web-resource-collection>
      <web-resource-name>ServerServlet</web-resource-name>
      <url-pattern>/ejb/*</url-pattern>
    </web-resource-collection>
<!--<auth-constraint>
    <role-name>developers</role-name>
</auth-constraint>-->
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Static Content</web-resource-name>
      <url-pattern>/webjars/*</url-pattern>
    </web-resource-collection>
  </security-constraint>
  <security-constraint>
    <web-resource-collection>
      <web-resource-name>Application</web-resource-name>
      <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
      <role-name>tomee-admin</role-name>
    </auth-constraint>
  </security-constraint>

 <login-config>
    <auth-method>BASIC</auth-method>
  </login-config>
  <security-role>
    <role-name>tomee-admin</role-name>
  </security-role>

</web-app>

【问题讨论】:

  • 您可以使用ng build --prod 构建而不会出错吗?
  • 其实我就是在使用这个:"build": "ng build --prod --output-path=dist/client" 并且它可以工作
  • 见上面我的 web.xml 配置

标签: angular tomcat cors


【解决方案1】:

我的 web.xml 文件。

    <?xml version='1.0' encoding='UTF-8' ?> 
    <!-- was: <?xml version="1.0" encoding="ISO-8859-1"?> -->
    <web-app 
       xmlns="http://java.sun.com/xml/ns/javaee" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" 
       version="3.0">
        <servlet>
            <servlet-name>TestStatusServlet</servlet-name>
            <servlet-class>com.qnium.yuuwallet.TestStatusServlet</servlet-class>
        </servlet>
        <servlet-mapping>
            <servlet-name>TestStatusServlet</servlet-name>
            <url-pattern>/test-status/*</url-pattern>
        </servlet-mapping>

    <!-- Enable for Jetty -->
        <filter>
           <filter-name>cors-filter-jetty</filter-name>
           <filter-class>org.eclipse.jetty.servlets.CrossOriginFilter</filter-class>
           <init-param>
               <param-name>allowedOrigins</param-name>
               <param-value>*</param-value>
           </init-param>
           <init-param>
               <param-name>allowedMethods</param-name>
               <param-value>GET,POST,HEAD</param-value>
           </init-param>
           <init-param>
               <param-name>allowedHeaders</param-name>
               <param-value>X-Requested-With,Content-Type,Accept,Origin</param-value>
           </init-param>
       </filter>
       <filter-mapping>
           <filter-name>cors-filter-jetty</filter-name>
           <url-pattern>/*</url-pattern>
       </filter-mapping>

    </web-app>

【讨论】:

    猜你喜欢
    • 2021-04-28
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 2021-11-16
    • 2018-07-07
    • 2022-07-26
    • 2021-11-10
    • 2017-07-04
    相关资源
    最近更新 更多