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

发布时间:2022-04-17 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了有关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.

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

以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跨域问题的两种解决方法所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: