angular - ng build --prod 允许缺少原点(404 禁止)

标签 angular tomcat cors

我在我的应用程序之外调用 REST APIS 并且我总是得到

Allow-Origin' header is present on the requested resource (403 Forbidden).

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

ng serve --proxy-config proxy.conf.json

它工作正常但是之后

ng build --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>

最佳答案

我的 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>

关于angular - ng build --prod 允许缺少原点(404 禁止),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45613040/

相关文章:

javascript - 如何使用node.js、mssql和msnodesqlv8在事务中正确执行循环查询

javascript - 在解决 promise 之前,函数正在重新调整未定义

tomcat - 安装 OpenAM J2EE Policy Agent 后不再能够访问 Tomcat Manager

tomcat - 将 Grails 应用程序部署到正在运行的 Tomcat

php - ajax自定义 header 提交两次

angular - 错误 TS2307 : Cannot find module '@angular/core'

angular - 多个 ngx 分页错误 Angular 2

Tomcat7 部署以前由调用程序 servlet 部署的类文件

node.js - 当使用来自不同本地主机端口的 GET api 时,本地主机上的 Angular 收到 404 - CORS 问题?

javascript - 在 onpaste 事件中发出 ajax 请求时访问被拒绝