調用同桌的接口 使用cors解決跨域問題

在這裏插入圖片描述

package com.etoak.filter;

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.HttpServletResponse;

import lombok.extern.slf4j.Slf4j;

@Slf4j
public class CrossDomainFilter implements Filter {
    
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        HttpServletResponse httpResponse = (HttpServletResponse)response;
        httpResponse.setHeader("Access-Control-Allow-Origin", "*");// 允許所有的請求域名訪問我們的跨域資源,可以固定單個或者多個內容
        httpResponse.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE,PUT");// 允許何種請求方法訪問該跨域資源服務器
        httpResponse.setHeader("Access-Control-Max-Age", "3600");//// 預檢請求的有效期,單位爲秒。有效期內,不會重複發送預檢請求
        httpResponse.addHeader("Access-Control-Allow-Headers", "Accept, Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With");// 允許所有的請求header訪問,可以自定義設置任意請求頭信息
        httpResponse.setHeader("Access-Control-Allow-Credentials", "true");// 是否允許用戶發送、處理 cookie
        chain.doFilter(request, httpResponse);
    }
    
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        log.info("-----CrossDomainFilter init -------");
    }
    
    @Override
    public void destroy() {
        
    }
    
}

在這裏插入圖片描述

<?xml version="1.0" encoding="UTF-8"?>
<!--scan: 當此屬性設置爲true時,配置文件如果發生改變,將會被重新加載,默認值爲true。
 scanPeriod: 設置監測配置文件是否有修改的時間間隔,如果沒有給出時間單位,默認單位是毫秒。
  當scan爲true時,此屬性生效。默認的時間間隔爲1分鐘(60 seconds)。 
debug: 當此屬性設置爲true時,將打印出logback內部日誌信息,默認值爲false。
     -->
<configuration scan="true" scanPeriod="120 seconds" debug="false">
	
	<!--用於區分不同應用程序的記錄
	<contextName>springmvc</contextName>
	 -->
	 
	<!-- 定義日誌文件所在目錄 -->
	<property name="LOG_HOME" value="d:/logs/" />

	<!--控制檯輸出 -->
	<appender name="stdout" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<!--解決亂碼問題 -->
			<charset>UTF-8</charset>
			
			<!--格式化輸出:%d表示日期,%thread表示線程名,%-5level:級別從左顯示5個字符寬度 %logger輸出日誌的logger名 
				%msg:日誌消息,%n是換行符 -->
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36}: %msg%n</pattern>
		</encoder>
	</appender>

	<!--滾動文件 -->
	<appender name="infoLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- ThresholdFilter:臨界值過濾器,過濾掉 TRACE 和 DEBUG 級別的日誌
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>INFO</level>
		</filter>
		-->
	
		<!-- 過濾掉ERROR日誌 -->
		<filter class="ch.qos.logback.classic.filter.LevelFilter">
			<level>ERROR</level>
			<onMatch>DENY</onMatch>
			<onMismatch>ACCEPT</onMismatch>
		</filter>
		<encoder>
			<charset>UTF-8</charset>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36}: %msg%n</pattern>
		</encoder>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_HOME}/info.%d{yyyy-MM-dd}.log</fileNamePattern>
			<maxHistory>30</maxHistory><!--保存最近30天的日誌 -->
		</rollingPolicy>
	</appender>

	<!--滾動文件 -->
	<appender name="errorLogFile" class="ch.qos.logback.core.rolling.RollingFileAppender">
		<!-- ThresholdFilter:臨界值過濾器,過濾掉 TRACE 和 DEBUG 級別的日誌 -->
		<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
			<level>error</level>
		</filter>
		<encoder>
			<charset>UTF-8</charset>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36}: %msg%n</pattern>
		</encoder>
		<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
			<fileNamePattern>${LOG_HOME}/error.%d{yyyy-MM-dd}.log
			</fileNamePattern>
			<maxHistory>30</maxHistory><!--保存最近30天的日誌 -->
		</rollingPolicy>
		
	</appender>

	<!--這裏如果是info,spring、mybatis等框架則不會輸出:
	   TRACE < DEBUG < INFO < WARN < ERROR 
	-->
	<!--root是所有logger的祖先,均繼承root,如果某一個自定義的logger沒有指定level,就會尋找 父logger看有沒有指定級別,直到找到root。 -->
	<root level="info">
		<appender-ref ref="stdout" />
		<appender-ref ref="infoLogFile" />
		<appender-ref ref="errorLogFile" />
	</root>

	<!--爲某個包單獨配置logger 比如定時任務,寫代碼的包名爲:com.seentao.task 步驟如下: 
	    1、定義一個appender,取名爲task(隨意,只要下面logger引用就行了) 
		appender的配置按照需要即可 
		2、定義一個logger: <logger name="com.seentao.task" level="DEBUG" 
		additivity="false"> <appender-ref ref="task" /> </logger> 注意:additivity必須設置爲false,這樣只會交給task這個appender,否則其他appender也會打印com.seentao.task裏的log信息。 
		3、這樣,在com.seentao.task的logger就會是上面定義的logger了。 private static Logger logger 
		= LoggerFactory.getLogger(Class1.class); -->
	<!--控制檯輸出 -->
	
	<appender name="mybatisLog" class="ch.qos.logback.core.ConsoleAppender">
		<encoder>
			<charset>UTF-8</charset>
			<pattern>[%d{yyyy-MM-dd HH:mm:ss.SSS}] [%thread] %-5level %logger{36}: %msg%n</pattern>
		</encoder>
	</appender>
	<logger name="com.etoak.mapper" level="DEBUG" additivity="false">
		<appender-ref ref="mybatisLog" />
	</logger>
	
</configuration>

在這裏插入圖片描述

連上同桌的熱點
同桌電腦關閉防火牆
在這裏插入圖片描述
cmd ping同桌ip

ping 192.168.43.63

這裏的端口號是同桌的
在這裏插入圖片描述
發送ajax請求

在這裏插入圖片描述
啓動自己的程序
項目名是自己程序的項目名
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述
在自己的服務器裏訪自己的資源不算跨域,
在ajax裏拿別人數據是跨域
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章