Maison > Java > javaDidacticiel > le corps du texte

Exemple de partage de code sur la façon dont Cors implémente un backend Java entièrement inter-domaines

黄舟
Libérer: 2017-05-28 09:30:14
original
1919 Les gens l'ont consulté

Cet article présente principalement l'exemple inter-domaines complet de l'implémentation du backend Java par Cors. L'éditeur pense que c'est assez bon, je vais donc le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil.

http://www.jb51.net/article/114838.htm Cet article présente le cross-domain de JS de manière très détaillée, donnant La solution est Spring Boot. Si vous n'utilisez pas Spring Boot ou si la version Spring est inférieure à 4.2, vous devez l'implémenter vous-même.

fait référence à l'implémentation de Spring Boot et est simplifié. comme suit :

package com.lvluo.web.filter.CorsFilter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.http.HttpHeaders;

public class CorsFilter implements Filter {

 public static final String ACCESS_CONTROL_REQUEST_METHOD = "Access-Control-Request-Method";

 public static final String OPTIONS = "OPTIONS";

 public void doFilter(ServletRequest request, ServletResponse response,
  FilterChain chain) throws IOException, ServletException {

 HttpServletRequest httpRequest = (HttpServletRequest) request;
 HttpServletResponse httpResponse = (HttpServletResponse) response;

 if (isCorsRequest(httpRequest)) {
  httpResponse.setHeader("Access-Control-Allow-Origin", "*");
  httpResponse.setHeader("Access-Control-Allow-Methods",
   "POST, GET, PUT, DELETE");
  httpResponse.setHeader("Access-Control-Allow-Credentials", "true");
  // response.setIntHeader("Access-Control-Max-Age", 1728000);
  httpResponse
   .setHeader(
    "Access-Control-Allow-Headers",
    "Origin, X-Requested-With, Content-Type, Accept, Accept-Encoding, Authorization");
  if (isPreFlightRequest(httpRequest)) {
  return;
  }
 }
 chain.doFilter(request, response);
 }

 public void init(FilterConfig filterConfig) {
 }

 public void destroy() {
 }

 public boolean isCorsRequest(HttpServletRequest request) {
 return (request.getHeader(HttpHeaders.ORIGIN) != null);
 }

 /**
 * Returns {@code true} if the request is a valid CORS pre-flight one.
 */
 public boolean isPreFlightRequest(HttpServletRequest request) {
 return (isCorsRequest(request) && OPTIONS.equals(request.getMethod()) && request
  .getHeader(ACCESS_CONTROL_REQUEST_METHOD) != null);
 }
}
Copier après la connexion

Configurez ensuite le filtre dans web.xml et vous pourrez

 <filter>
  <filter-name>corsFilter</filter-name>
  <filter-class>com.lvluo.web.filter.CorsFilter</filter-class>
 </filter>
 <filter-mapping>
  <filter-name>corsFilter</filter-name>
  <url-pattern>/api/*</url-pattern>
 </filter-mapping>
Copier après la connexion

Code JS pour les tests front-end, parmi lesquels celui du client

$.ajax({
  headers : {
   &#39;Authorization&#39; :&#39;Bearer iBoxSO9QdrHR0&#39; 
  },
  url: &#39;http://localhost:8080/service/api/ping&#39;,
  type: &#39;GET&#39;,
  dataType: &#39;json&#39;,
  success : function(result){
   $("#result").html(result.code);
  }
  })
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal