AJAX跨域介绍

  AJAX 跨域访问是用户访问A网站时所产生的对B网站的跨域访问请求均提交到A网站的指定页面

  由于安全方面的原因, 客户端js使用xmlhttprequest只能用来向来源网站发送请求,比如在www.readlog.cn下去请求test.readlog.cn的数据,都是不行的。

  什么是AJAX跨域问题

  • 简单来说,就是前端调用后端服务接口时
  • 如果服务接口不是同一个域,就会产生跨域问题

  AJAX跨域场景

  • 前后端分离、服务化的开发模式
  • 前后端开发独立,前端需要大量调用后端接口的场景
  • 只要后端接口不是同一个域,就会产生跨域问题
  • 跨域问题很普遍,解决跨域问题也很重要

  AJAX跨域原因

  • 浏览器限制:浏览器安全校验限制
  • 跨域(协议、域名、端口任何一个不一样都会认为是跨域)
  • XHR(XMLHttpRequest)请求

  AJAX跨域问题解决思路

  • 浏览器:浏览器取下跨域校验,实际价值不大
  • XHR:不使用XHR,使用JSONP,有很多弊端,无法满足现在的开发要求
  • 跨域:被调用方修改支持跨域调用(指定参数);调用方修改隐藏跨域(基于代理)

  如图:

    【JS】AJAX跨域-JSONP解决方案(一)

解决跨域问题

  实例

    1、新建一个SpringMVC的Maven工程,参考:【Maven】Eclipse 使用Maven创建SpringMVC Web项目,pom.xml文件如下:

  1 <project xmlns="http://maven.apache.org/POM/4.0.0"
  2     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3     xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  4     <modelVersion>4.0.0</modelVersion>
  5     <groupId>com.test</groupId>
  6     <artifactId>test-ajax-cross</artifactId>
  7     <packaging>war</packaging>
  8     <version>0.0.1-SNAPSHOT</version>
  9     <!-- 定义maven变量 -->
 10     <properties>
 11         <!-- spring -->
 12         <spring.version>4.2.0.RELEASE</spring.version>
 13 
 14         <!-- log -->
 15         <commons-logging.version>1.1.3</commons-logging.version>
 16 
 17         <!-- Servlet -->
 18         <servlet.version>3.0.1</servlet.version>
 19         <jsp-api.version>2.2</jsp-api.version>
 20 
 21         <!-- jstl -->
 22         <jstl.version>1.2</jstl.version>
 23         <standard.version>1.1.2</standard.version>
 24 
 25         <!-- Tool -->
 26         <!-- jackson json包 -->
 27         <jackson-databind.version>2.9.7</jackson-databind.version>
 28         <jackson-core.version>2.9.7</jackson-core.version>
 29         <jackson-annotations.version>2.9.7</jackson-annotations.version>
 30 
 31         <!-- test -->
 32         <junit.version>3.8.1</junit.version>
 33 
 34         <!-- jdk -->
 35         <jdk.version>1.8</jdk.version>
 36         <maven.compiler.plugin.version>2.3.2</maven.compiler.plugin.version>
 37     </properties>
 38 
 39 
 40     <dependencies>
 41 
 42         <dependency>
 43             <groupId>org.springframework</groupId>
 44             <artifactId>spring-core</artifactId>
 45             <version>${spring.version}</version>
 46         </dependency>
 47 
 48         <dependency>
 49             <groupId>org.springframework</groupId>
 50             <artifactId>spring-beans</artifactId>
 51             <version>${spring.version}</version>
 52         </dependency>
 53 
 54         <dependency>
 55             <groupId>org.springframework</groupId>
 56             <artifactId>spring-context</artifactId>
 57             <version>${spring.version}</version>
 58         </dependency>
 59 
 60         <dependency>
 61             <groupId>org.springframework</groupId>
 62             <artifactId>spring-jdbc</artifactId>
 63             <version>${spring.version}</version>
 64         </dependency>
 65 
 66 
 67         <dependency>
 68             <groupId>org.springframework</groupId>
 69             <artifactId>spring-expression</artifactId>
 70             <version>${spring.version}</version>
 71         </dependency>
 72 
 73         <dependency>
 74             <groupId>org.springframework</groupId>
 75             <artifactId>spring-web</artifactId>
 76             <version>${spring.version}</version>
 77         </dependency>
 78 
 79         <dependency>
 80             <groupId>org.springframework</groupId>
 81             <artifactId>spring-webmvc</artifactId>
 82             <version>${spring.version}</version>
 83         </dependency>
 84 
 85         <dependency>
 86             <groupId>org.springframework</groupId>
 87             <artifactId>spring-tx</artifactId>
 88             <version>${spring.version}</version>
 89         </dependency>
 90 
 91 
 92 
 93 
 94         <!-- Servlet -->
 95         <dependency>
 96             <groupId>javax.servlet</groupId>
 97             <artifactId>javax.servlet-api</artifactId>
 98             <version>${servlet.version}</version>
 99             <scope>provided</scope>
100         </dependency>
101         <dependency>
102             <groupId>javax.servlet.jsp</groupId>
103             <artifactId>jsp-api</artifactId>
104             <version>${jsp-api.version}</version>
105             <scope>provided</scope>
106         </dependency>
107 
108         <!-- jstl -->
109         <dependency>
110             <groupId>javax.servlet</groupId>
111             <artifactId>jstl</artifactId>
112             <version>${jstl.version}</version>
113         </dependency>
114 
115         <dependency>
116             <groupId>taglibs</groupId>
117             <artifactId>standard</artifactId>
118             <version>${standard.version}</version>
119         </dependency>
120 
121 
122         <!-- jackson json包 -->
123         <dependency>
124             <groupId>com.fasterxml.jackson.core</groupId>
125             <artifactId>jackson-databind</artifactId>
126             <version>${jackson-databind.version}</version>
127         </dependency>
128 
129         <dependency>
130             <groupId>com.fasterxml.jackson.core</groupId>
131             <artifactId>jackson-core</artifactId>
132             <version>${jackson-core.version}</version>
133         </dependency>
134 
135         <dependency>
136             <groupId>com.fasterxml.jackson.core</groupId>
137             <artifactId>jackson-annotations</artifactId>
138             <version>${jackson-annotations.version}</version>
139         </dependency>
140 
141         <!-- test -->
142         <dependency>
143             <groupId>junit</groupId>
144             <artifactId>junit</artifactId>
145             <version>${junit.version}</version>
146             <scope>test</scope>
147         </dependency>
148 
149     </dependencies>
150 
151 
152     <build>
153         <plugins>
154             <!-- define the project compile level -->
155             <plugin>
156                 <groupId>org.apache.maven.plugins</groupId>
157                 <artifactId>maven-compiler-plugin</artifactId>
158                 <version>${maven.compiler.plugin.version}</version>
159                 <configuration>
160                     <source>${jdk.version}</source>
161                     <target>${jdk.version}</target>
162                 </configuration>
163             </plugin>
164         </plugins>
165         <finalName>test-ajax-cross</finalName>
166     </build>
167 
168 </project>
View Code

相关文章:

  • 2021-09-25
  • 2021-10-10
  • 2021-06-09
  • 2021-11-22
猜你喜欢
  • 2021-10-07
  • 2021-08-06
  • 2022-03-02
  • 2021-07-03
  • 2022-12-23
  • 2022-12-23
  • 2021-12-19
相关资源
相似解决方案