• 技术文章 >web前端 >js教程

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

    亚连亚连2018-05-24 16:09:50原创1011
    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在google chrome浏览器上失效

    如何利用jQuery post传递含特殊字符的数据

    以上就是有关Ajax跨域问题的两种解决方法的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Ajax 解决 两种
    上一篇:基于ajax实现点击加载更多无刷新载入到本页 下一篇:js ajax加载时的进度条代码
    20期PHP线上班

    相关文章推荐

    • 【活动】充值PHP中文网VIP即送云服务器• 如何安装并管理多版本node?方法介绍• 深入了解Angular中的依赖注入模式(玩法案例)• JavaScript创建多个对象方法总结• 聊聊node+multiparty怎么实现文件上传• 简单聊聊JavaScript中的事件监听
    1/1

    PHP中文网