首页 > 编程语言 >AJAX跨域请求的理解,JAVA

AJAX跨域请求的理解,JAVA

时间:2023-01-06 14:33:29浏览次数:39  
标签:浏览器 跨域 jar ajax AJAX 同源 cors JAVA 请求



1.浏览器的同源策略

    目前所有浏览器都由同源策略

        什么是同源策略:      协议、域名、端口都一直的uri称为“同源”

 

        不同源之间存在以下问题:

            a.无法读取cookie

            b.无法获取dom

            c.无法发送ajax请求

 

 

2.ajax的跨域请求

     三种方式:

        a.jsonp(利用了script标签不受同源策略影响,只支持get方式,一般用jquery的jsonp封装,接口需在返回值的外面包 回调函数)

        b.websocket(一种通信协议,不受同源策略影响)

        c.cors(corss-origin resource sharing),跨资源分享,是跨域ajax请求的根本解决方法。

        cors需要 浏览器和服务器同时支持。目前,所有浏览器都支持该功能,所以只需要在服务器设置好cors就可以了。

        浏览器一旦发现ajax请求跨源,就会自动添加一些附加的头信息,有时还会多出一次附加的请求。

        JAVA后端的解决方案:

            

 

        第一步:jar包:cors-filter-1.7.jar,java-property-utils-1.9.jar

            或者maven:

                

        

<dependency>
<groupId>com.thetransactioncompany</groupId>
<artifactId>cors-filter</artifactId>
<version>[ version ]</version>
</dependency>

            

            第二步:添加cors配置到web.xml中

                

<!-- 跨域配置-->    
<filter>
<!-- The CORS filter with parameters -->
<filter-name>CORS</filter-name>
<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
<!-- Note: All parameters are options, if omitted the CORS
Filter will fall back to the respective default values.
-->
<init-param>
<param-name>cors.allowGenericHttpRequests</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.allowOrigin</param-name>
<param-value>*</param-value>
</init-param>
<init-param>
<param-name>cors.allowSubdomains</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>cors.supportedMethods</param-name>
<param-value>GET, HEAD, POST, OPTIONS</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>
<!--这里可以添加一些自己的暴露Headers -->
<param-value>X-Test-1, X-Test-2</param-value>
</init-param>
<init-param>
<param-name>cors.supportsCredentials</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>cors.maxAge</param-name>
<param-value>3600</param-value>
</init-param>
</filter>
<filter-mapping>
<!-- CORS Filter mapping -->
<filter-name>CORS</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

注意:以上配置文件放到web.xml的最前面,作为第一个filter

 

 

    

        

标签:浏览器,跨域,jar,ajax,AJAX,同源,cors,JAVA,请求
From: https://blog.51cto.com/u_15932265/5993541

相关文章

  • 在java中使用solrj对solr进行CRUD
    如果想要知道如何安装solr,集成IKAnalyzer中文分词器,批量导入数据库数据,java使用参照以下本博主博文:安装solr集成IKAnalyzer中文分词器solr使用浏览器批量导入数据库中数据s......
  • Java中在指定范围内生成整型、长整型、双精度随机数流
    场景Java8新特性-Stream对集合进行操作的常用API:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126070657如果希望在指定范围内生成整型、长整型或双精度......
  • JAVA的FOR 语句
    快捷键 输入100.for等于输入for(inti=0;i<100;i++){}publicclassForDemo{publicstaticvoidmain(String[]......
  • Java 获取本机IP地址
    文章目录​​前言​​​​一、规则​​​​二、获取​​​​1.使用​​​​2.工具类​​前言在Java中如何准确的获取到本机IP地址呢?网上大部分的做法是​​InetAddress.getL......
  • 来自菜鸡Java工程师的日积月累
    项目简介目前​​Treasure​​​是个微服务架构的纯后端项目,前端部分后期进行;同时​​Treasure​​是一个来自菜鸡Java工程师本着对技术的积累与个人的成长的开源项目。主......
  • Java String为什么被设计为final的
    文章目录String被设计为不可变是因为String对象是缓存在字符串池中的,因此这些缓存的字符串是可以被多个客户端访问的,如果一个客户端的访问影响了别的客户端的行为,这样就存在......
  • Java 集合判空优化
    文章目录//反例LinkedList<Object>collection=newLinkedList<>();if(collection.size()==0){System.out.println("collectionisempty.");}//正例LinkedList<O......
  • Java 中map 遍历优化
    文章目录packagedemo.map;importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.stream.Collectors;/***<p>*Map遍历优化*</P>......
  • Java嵌套if else优化
    文章目录​​1.传统实现​​​​2.策略模式+工厂模式+单例模式优化​​​​2.1策略接口​​​​2.2不同策略实现类​​​​2.2.1处理策略一​​​​2.2.2处理策略二​......
  • Java8 函数式接口
    文章目录​​一、特点​​​​二、函数式接口中允许定义的方法类型​​​​三、四大内置函数式接口​​​​1.`Consumer`消费​​​​1.1示例​​​​2.`Supplier`供应......