有关Ajax跨域问题的两种解决方法

 更新时间:2015年10月15日 09:35:51   投稿:mrr  
ajax本身实际上是通过XMLHttpRequest对象来进行数据的交互,而浏览器出于安全考虑,不允许js代码进行跨域操作,会警告,所以才出现ajax跨域的问题。

概述

Ajax跨域是前端开发中常见的问题,本文描述了以Google浏览器Chrome作为客户端和以Tomcat作为Web服务器的情况下的解决办法。

问题现象

当出现跨域访问的时候ajax通常会报类似如下错误:

XMLHttpRequest cannot load http://192.168.2.12:8001/oss/api/version/check. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8000' is therefore not allowed access.

解决办法一:关闭浏览器的跨域安全设置,仅限于开发的时候测试用

以chrome浏览器为例,右键点击chrome的快捷方式,然后在Target的值后面追加 --disable-web-security,注意--前面有个空格。例如:

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --disable-web-security

启动之后,Chrome浏览器会提示您"您使用的是不受支持的命令行标记:--disable-web-security",说不安全,因此仅限于测试。

这样就可以直接测试,不会出现跨域的错误了!

解决办法二:配置Web服务器支持跨域访问

这里描述以Tomcat为Web服务器情况下的解决办法,在Java Web程序的WEB-INF下的web.xml文件中加入如下配置即可。

<!--cors filter-->
  <filter>
    <filter-name>CorsFilter</filter-name>
    <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>CorsFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>

注意:org.apache.catalina.filters.CorsFilter下面有好几个配置的选项,上面没有配置时就采用系统的默认配置。在实际生产环境要根据需要进行配置来提高安全性。比如cors.allowed.origins配置允许访问的源地址,默认为所有,即*。此外,还有cors.allowed.methods,cors.allowed.headers等等。具体的配置细节请参见本文参考资料中的[1]。

以上两种方法均能解决ajax跨域问题,希望本文分享对大家有所帮助。

相关文章

  • AJAX天气预报前台

    AJAX天气预报前台

    AJAX天气预报前台...
    2007-01-01
  • 使用AJAX返回WebService里的集合具体实现

    使用AJAX返回WebService里的集合具体实现

    如何使用AJAX返回WebService里的集合,在本文将有一个完美的实现,感兴趣的朋友可以参考下哈,希望可以帮助到你
    2013-05-05
  • Ajax读取XML实现动态下拉导航

    Ajax读取XML实现动态下拉导航

    Ajax读取XML实现动态下拉导航...
    2007-02-02
  • 爬取今日头条Ajax请求

    爬取今日头条Ajax请求

    今天小编就为大家分享一篇关于爬取今日头条Ajax请求的文章,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-10-10
  • Ajax读取数据到表格的实现代码

    Ajax读取数据到表格的实现代码

    前两篇我们讲了 ajax开始的准备 与及如何使用ajax技术进行简单的数据读取.
    2010-10-10
  • Ajax工作原理深入理解

    Ajax工作原理深入理解

    ajax是异步的意思,它有别于传统web开发中采用的同步的方式。异步传输是面向字符的传输,它的单位是字符;而同步传输是面向比特的传输,它的单位是桢,它传输的时候要求接受方和发送方的时钟是保持一致的
    2013-08-08
  • 如何封装一个Ajax函数

    如何封装一个Ajax函数

    这篇文章主要介绍了如何封装一个Ajax函数,帮助大家更好的理解和学习网络编程,感兴趣的朋友可以了解下
    2021-05-05
  • Boa服务器下的ajax与cgi通信

    Boa服务器下的ajax与cgi通信

    最近小编在研究嵌入式开发的课程设计,接下来通过本篇文章给介绍了Boa服务器下的ajax与cgi通信的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起看下吧
    2016-07-07
  • 掌握AJAX

    掌握AJAX

    掌握AJAX...
    2006-09-09
  • 基于Ajax技术实现无刷新用户登录功能

    基于Ajax技术实现无刷新用户登录功能

    这篇文章主要介绍了基于Ajax技术实现无刷新用户登录功能,非常不错,具有参考借鉴价值,需要的的朋友参考下吧
    2017-01-01

最新评论