跨域问题:解决跨域的三种方案

跨域问题:解决跨域的三种方案

当前端页面与后台运行在不同的服务器时,就必定会出现跨域这一问题,本篇简单介绍解决跨域的三种方案,部分代码截图如下,仅供参考:
方式一:使用ajax的jsonp
前端代码
跨域问题:解决跨域的三种方案
 服务器代码
跨域问题:解决跨域的三种方案
 使用该方式的缺点:请求方式只能是get请求

方式二:使用jQuery的jsonp插件
插件下载网址:https://github.com/jaubourg/jquery-jsonp
前端代码
跨域问题:解决跨域的三种方案

服务器代码
跨域问题:解决跨域的三种方案
 使用该方式的特点:与方式一相比,请求方式不只局限于get请求,还可以是post请求,但从服务器从获取的数据依然是jsonp格式

方式三:使用cors
前端代码
跨域问题:解决跨域的三种方案

服务器代码
跨域问题:解决跨域的三种方案
使用该方式的特点:与前两种方式相比,前端代码和未处理跨域前一样,即普通的ajax请求,但服务器代码添加了一段解决跨域的代码
    // 设置:Access-Control-Allow-Origin头,处理Session问题
        response.setHeader(“Access-Control-Allow-Origin”, request.getHeader(“Origin”));
        response.setHeader(“Access-Control-Allow-Credentials”, “true”);
        response.setHeader(“P3P”, “CP=CAO PSA OUR”);
        if (request.getHeader(“Access-Control-Request-Method”) != null && “OPTIONS”.equals(request.getMethod())) {

            response.addHeader(“Access-Control-Allow-Methods”, “POST,GET,TRACE,OPTIONS”);
            response.addHeader(“Access-Control-Allow-Headers”, “Content-Type,Origin,Accept”);
            response.addHeader(“Access-Control-Max-Age”, “120”);
        }

cors高级使用:在springmvc中配置拦截器
创建跨域拦截器实现HandlerInterceptor接口,并实现其方法,在请求处理前设置头信息,并放行
跨域问题:解决跨域的三种方案
在springmvc的配置文件中配置拦截器,注意拦截的是所有的文件
跨域问题:解决跨域的三种方案

转载于:https://www.cnblogs.com/MaxElephant/p/10244481.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101187.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C/C++ 最常见50道面试题

    C/C++ 最常见50道面试题C/C++经典面试题面试题1:变量的声明和定义有什么区别为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明,但是只在一个地方定义。加入extern修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间,如外部变量。面试题2:写出bool、int、……

    2022年6月25日
    37
  • 指纹和人脸识别能同时设置吗_华为畅享9有指纹吗

    指纹和人脸识别能同时设置吗_华为畅享9有指纹吗指纹识别可以说是近几年来智能手机的标配,而且也有很多机型采用了人脸识识别和指纹识别的双重解锁方案。那么华为畅享Z有指纹识别吗?支持人脸识别解锁吗。下面小编就来为大家详细解答一下,一起来看看吧!华为畅享Z有指纹识别吗?支持人脸识别解锁吗华为畅享Z有指纹识别和人脸识别解锁吗据能哈小编了解,华为畅享Z是有指纹识别功能的,不过它采用的是侧边指纹解锁,而非屏幕指纹解锁,同时它还支持人脸识别解锁方案,两者组合…

    2022年8月10日
    19
  • CSS 换行_css不允许换行

    CSS 换行_css不允许换行1、强制换行word-break:break-all;/*只对英文起作用,以字母作为换行依据。如果该行末端有个很长的英文单词,它会把单词截断,一部分保持在行尾,另一部分换到下一行。*/word-wrap:break-word;/*只对英文起作用,以单词作为换行依据。如果该行末端宽度不够显示整个单词,它会自动把整个单词放到下一行,而不会把单词截断掉。*/white-space:pre-wrap;/*只对中文起作用,强制换行。*/2、禁止换行(单行文本截断)white-spac

    2025年7月30日
    3
  • route命令的使用详解[通俗易懂]

    route命令的使用详解[通俗易懂]Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table)。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设…

    2022年7月18日
    17
  • Hibernate框架–学习笔记(上):hibernate项目的搭建和常用接口方法、对象的使用

    Hibernate框架–学习笔记(上):hibernate项目的搭建和常用接口方法、对象的使用

    2021年9月26日
    44
  • C++宏和枚举

    宏我们的计算器程序,用1234对应加减乘除,对于人阅读很产生一点障碍。隔一个月后再看此代码可能想不起是0123还是1234了,还得去代码中查找,如果能为代表四则运算的四个数取个有意义的别名就好了,一

    2021年12月24日
    53

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号