Beim Aufbau eines Systems muss der js-Code von System A manchmal die Schnittstelle von System B aufrufen, was zu domänenübergreifenden Phänomenen führt kann über den Hintergrundanruf erfolgen, um domänenübergreifende
-Probleme zu bearbeiten, ist ein bisschen wie „Agentur“.
public String httpPost(String urlStr,Map<String,String> params){ URL connect; StringBuffer data = new StringBuffer(); try { connect = new URL(urlStr); HttpURLConnection connection = (HttpURLConnection)connect.openConnection(); connection.setRequestMethod("POST"); connection.setDoOutput(true); connection.setDoInput(true); connection.setUseCaches(false);//post不能使用缓存 connection.setInstanceFollowRedirects(true); connection.setRequestProperty("accept", "*/*"); connection.setRequestProperty("connection", "Keep-Alive"); connection.setRequestProperty("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)"); OutputStreamWriter paramout = new OutputStreamWriter( connection.getOutputStream(),"UTF-8"); String paramsStr = ""; //拼接Post 请求的参数 for(String param : params.keySet()){ paramsStr += "&" + param + "=" + params.get(param); } if(!paramsStr.isEmpty()){ paramsStr = paramsStr.substring(1); } paramout.write(paramsStr); paramout.flush(); BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(), "UTF-8")); String line; while ((line = reader.readLine()) != null) { data.append(line); } paramout.close(); reader.close(); } catch (Exception e) { // TODO Auto-generated catch block e.printStackTrace(); } return data.toString(); }
Hintergrund: Ein Bei unserem System handelt es sich um ein Vorschlagssystem, auf das von außen verwiesen wird. Nachdem ein Benutzer einen Kommentar oder eine Antwort erhalten hat, wird die Anzahl der ungelesenen Nachrichten in „Meine Nachrichten“ angezeigt.
Der erzielte Effekt: Wenn im Vorschlagssystem die Anzahl der ungelesenen Nachrichten größer als 0 ist, wird an der Stelle, an der unser System einführt, eine Aufforderung für ungelesene Nachrichten angezeigt das Vorschlagssystem.
Im Hintergrund des vorgeschlagenen Systems haben wir eine countBlog-Schnittstelle geschrieben, um die Anzahl der ungelesenen Nachrichten zu erhalten (JSON-Format)
Stellen Sie im Front-End unseres Systems vor die Schnittstelle Steuern Sie die rote Punktanzeige anhand der Anzahl der zurückgegebenen ungelesenen Nachrichten
Melden Sie domänenübergreifende Problemfehler nach der Ausführung:
#🎜🎜 #Methode 1: @CrossOrigin mit Anmerkungen versehen
Methode 2: CorsMappings-Konfiguration hinzufügen
@Override public void addCorsMappings(CorsRegistry registry) { registry.addMapping("/**") .allowedOrigins("*") .allowedMethods("GET", "HEAD", "POST", "PUT", "DELETE", "OPTIONS") .allowCredentials(true) .maxAge(3600) .allowedHeaders("*"); }Nachteile: Verwenden Sie diese Methode zu Konfigurieren und dann verwenden. Domänenübergreifende Konfigurationen werden beim Anpassen von Interceptoren ungültig. Der Grund ist die Reihenfolge der Anfragen. Wenn die Anfrage eingeht, wird sie zuerst in den Interceptor und nicht in die Mapping-Zuordnung eingegeben, sodass die zurückgegebenen Header-Informationen keine konfigurierten domänenübergreifenden Informationen enthalten. Der Browser meldet eine domänenübergreifende Ausnahme.
Methode 3: CorsFilter-Filter verwenden
private CorsConfiguration corsConfig() { CorsConfiguration corsConfiguration = new CorsConfiguration(); * 请求常用的三种配置,*代表允许所有,当时你也可以自定义属性(比如header只能带什么,只能是post方式等等) */ corsConfiguration.addAllowedOrigin("*"); corsConfiguration.addAllowedHeader("*"); corsConfiguration.addAllowedMethod("*"); corsConfiguration.setAllowCredentials(true); corsConfiguration.setMaxAge(3600L); return corsConfiguration; } @Bean public CorsFilter corsFilter() { UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource(); source.registerCorsConfiguration("/**", corsConfig()); return new CorsFilter(source); }
Das obige ist der detaillierte Inhalt vonSo lösen Sie die Java-Hintergrundaufrufschnittstelle und behandeln domänenübergreifende Probleme. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!