• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >JSP > 跨域问题:“No 'Access-Control-Allow-Origin' header is present on the requested resource”

跨域问题:“No 'Access-Control-Allow-Origin' header is present on the requested resource”

作者:kayfen 字体:[增加 减小] 来源:互联网 时间:2017-12-08

kayfen通过本文主要向大家介绍了spring mvc,浏览器等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

原来我理解的“跨域”只是我个人的理解,在网上搜索解决方法,都是在SpringMVC 的服务器中写一个过滤器 Filter ,让 Filter 拦截请求,在response返回的时候加上一些请求头,这样就可以解决跨域的问题,类似于下面这样:

package com.kay.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * Created by kay on 2017/12/7.
 */
public class CrossFilter implements Filter{
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletResponse response= (HttpServletResponse) servletResponse;
        String origin= servletRequest.getRemoteHost()+":"+servletRequest.getRemotePort();
        response.setHeader("Access-Control-Allow-Origin", "*");
        response.setHeader("Access-Control-Allow-Headers", "Authentication");
       /* response.setHeader("Access-Control-Allow-Methods","POST,GET,OPTIONS,DELETE");
        response.setHeader("Access-Control-Max-Age","3600");
        response.setHeader("Access-Control-Allow-Credentials","true");*/
        filterChain.doFilter(servletRequest,servletResponse);
    }
    public void destroy() {

    }
}

然后在web.xml中配置一下filter:

<filter>
    <filter-name>cors</filter-name>
    <filter-class>com.kay.filter.CrossFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>cors</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

而在前端请求中,ajax 参数中的 dataType 要改为 “text”,不支持 dataType:”json”:

 $.ajax({
    url:"http://localhost:8081/list",
    type:"GET",//请求方式
    dataType:"text",//返回参数的类型 text/html
    success:function (data) {//请求成功后调用的函数
      alert("succ:"+data);
    },
    error:function (textStatus) {//请求失败后调用的函数
      alert("fail");
    }
  })

为什么要加像 ”Access-Control-Allow-Origin“ 这样的响应头就能解决跨域问题呢?

跨域请求又叫,”跨域资源共享”(Cross-origin resource sharing),它允许浏览器向跨源服务器,发出XMLHttpRequest请求,从而克服了AJAX只能同源使用的限制。

CORS需要浏览器和服务器同时支持。
服务器会检查 浏览器的请求中是否 有 ”Origin“请求头,它是在跨域请求发出的时候 由浏览器自动加上的,然后服务器检查这个 请求头设置的 服务器的源(来自于哪里)来判断是否响应,是否允许这个请求访问,我们会看到设置response.setHeader("Access-Control-Allow-Origin", "*"); 它的意思就是允许所有的源访问服务器,也可以只将自己的源(域名)设置就不允许其他的源访问。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • springMVC结合jackson使用demo
  • 跨域问题:“No 'Access-Control-Allow-Origin' header is present on the requested resource”
  • Spring MVC的文件下载实例详解
  • JSP 中spring事务配置详解
  • Spring MVC自定义日期类型转换器实例详解
  • JSP Spring 自动化装配Bean实例详解
  • JSP 中Spring组合注解与元注解实例详解
  • Spring mvc实现Restful返回json格式数据实例详解
  • Spring mvc实现Restful返回xml格式数据实例详解
  • Spring框架中 @Autowired 和 @Resource 注解的区别

相关文章

  • 2017-05-11卖jsp编程技巧的那个垃圾的所有实例的答案全部已收集,现将他人收集的实例答案公布出来,大家鉴赏!
  • 2017-05-11jsp防止跨域提交数据的具体实现
  • 2017-05-11浅谈request.getinputstream只能读取一次的问题
  • 2017-05-11jsp操作MySQL实现查询/插入/删除功能示例
  • 2017-05-11JBuilderX+SQL Server开发hibernate
  • 2017-05-11java session出现的错误
  • 2017-05-11六、访问CGI变量
  • 2017-05-11JDBC板块精华整理20051226
  • 2017-05-11jsp include文件时的一个乱码解决方法
  • 2017-05-11js实现百度地图同时显示多个路书效果

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 批量处理JDBC语句提高处理速度
    • jsp输出九九乘法表的简单实例
    • jsp中文显示问号问题解决方法
    • Java中使用JCOM操作Office对象
    • 在JSP中处理虚拟路径
    • IIS6 和Tomcat5 的整合
    • JSP页面伪静态化
    • SpringWebFlow远程代码执行漏洞分析
    • jsp+servlet+jdbc实现对数据库的增删改查
    • JSP页面中如何用select标签实现级联

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有