Die Axios von VUE + SSM + MAVEN fordern eine domänenübergreifende Problemlösung an

Bevor wir verstehen, was domänenübergreifend ist, müssen wir zuerst verstehen, was die Richtlinie mit demselben Ursprung ist.
Dieselbe Ursprungsrichtlinie wird verwendet, um die Interaktion von Dokumenten oder Skripten, die aus einer Quelle geladen wurden, mit Ressourcen aus einer anderen Quelle einzuschränken. Wie kann man also beurteilen, ob es sich um dieselbe Quelle handelt?

Wenn das Protokoll, der Port (falls angegeben) und der Host für zwei Seiten identisch sind, haben die beiden Seiten dieselbe Quelle, dh dieselbe Quelle. Mit anderen Worten, die folgenden drei Bedingungen müssen gleichzeitig erfüllt sein, um als dieselbe Quelle bezeichnet zu werden:

  1. Gleiche Vereinbarung
  2. Gleicher Port
  3. Gleicher Gastgeber

Zum Beispiel ist auf einen Blick klar: Mal
sehen, ob die folgende Seite mit http: // localhost: 8080 / pages / login.html identisch ist?

http: // localhost: 8080 / pages // index.html Gleicher Ursprung
http: // localhost: 8080 / pages / dir2 / index2.html Gleicher Ursprung, obwohl in verschiedenen Ordnern
https: // localhost: 8080 / pages / login .html Unterschiedliche Quellen mit unterschiedlichen Protokollen (https)
http: // localhost: 8888 / pages / login.html Unterschiedliche Quellen mit unterschiedlichen Ports (8888)
http://66.66.66.66:8080/pages/login.html l Unterschiedliche Quellen sind unterschiedlich Gastgeber

Wie können domänenübergreifende Probleme gelöst werden?
Das Folgende ist eine persönliche Lösung
1. Fügen Sie Koordinaten in pom.xml hinzu

	<!-- 与跨域过滤器相关 -->
    <dependency>
      <groupId>com.thetransactioncompany</groupId>
      <artifactId>java-property-utils</artifactId>
      <version>1.9.1</version>
    </dependency>
    <dependency>
      <groupId>com.google.code.gson</groupId>
      <artifactId>gson</artifactId>
      <version>2.6.2</version>
    </dependency>
    <dependency>
      <groupId>com.thetransactioncompany</groupId>
      <artifactId>cors-filter</artifactId>
      <version>2.5</version>
    </dependency>
  1. Konfigurieren Sie Filter für die Verarbeitung domänenübergreifender Anforderungen in web.xml
<!-- 解决vue axios请求跨域问题的过滤器 -->
  <filter>
    <filter-name>CORS</filter-name>
    <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
    <init-param>
      <!--服务器允许跨域请求的域名(*表示全部均可)-->
      <param-name>cors.allowOrigin</param-name>
      <param-value>*</param-value>
    </init-param>
    <init-param>
      <!--服务端支持的请求方法(*表示全部均可)-->
      <param-name>cors.supportedMethods</param-name>
      <param-value>GET, POST, HEAD, PUT, DELETE</param-value>
    </init-param>
    <init-param>
      <!--允许返回给跨域请求的响应头列表-->
      <param-name>cors.supportedHeaders</param-name>
      <param-value>Accept, Origin, X-Requested-With, Content-Type, Last-Modified</param-value>
    </init-param>
    <init-param>
      <!-- 允许返回给跨域请求的响应头列表-->
      <param-name>cors.exposedHeaders</param-name>
      <param-value>Set-Cookie</param-value>
    </init-param>
    <init-param>
      <!--告知浏览器当withCredentials属性设置为true时,是否可以显示跨域请求返回的内容。
      简单请求时,浏览器会根据此响应头决定是否显示响应的内容。
      预先验证请求时,浏览器会根据此响应头决定在发送实际跨域请求时,是否携带认证信息。-->
      <param-name>cors.supportsCredentials</param-name>
      <param-value>true</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>CORS</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

Viele Online-Lösungen für dieses Problem werden durch Schreiben von JAVA-Klassen oder Bearbeiten der Datei springmvc.xml konfiguriert. Mein persönlicher Test war jedoch ungültig, als ich ihn zu diesem Zeitpunkt verwendete. Dies ist eine persönliche effektive Lösung

Ich denke du magst

Origin blog.csdn.net/qq_42301302/article/details/103510522
Empfohlen
Rangfolge