有关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跨域问题,希望本文分享对大家有所帮助。

时间: 2024-07-28 20:23:13

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

有关Ajax跨域问题的两种解决方法_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 re

ASP.NET防止页面刷新的两种解决方法

 本篇文章主要是对ASP.NET防止页面刷新的两种解决方法进行了详细的分析介绍,需要的朋友可以过来参考下,希望对大家有所帮助 方法有二,总结如下:    第一方法:  直接在CS代码里敲:  Response.Buffer = true;  Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);  Response.Expires = 0;  Response.CacheControl = "no-cache";    当有人想按

js的form表单提交url传参数(包含+等特殊字符)的两种解决方法_javascript技巧

方法一:(伪装form表单提交) linkredwin = function(A,B,C,D,E,F,G){ var formredwin = document.createElement("form"); formredwin.method = 'POST'; document.body.appendChild(formredwin); formredwin.action = "http://www.A.com/A.wiki?A=" +encodeURI(A) +

ASP+中文显示之两种解决方法

ASP+中文显示之两种解决方法 作者刚开始写ASP+程序时候碰到的第一个比较大的问题就是中文显示问题,运行后发现ASP+从数据库中读出来的中文全部变成了?????,有点类似jsp中的这个频率出现最高的中文显示问题了,查了资料发现有种方法可以轻松解决中文问题. 方法一: 在翻阅了微软NGWS文档后发现在文档的常见问题部分有提到要添加一个config.web文件到 web目录下,试了一下,中文显示果然OK了. 方法如下: 建立一个文件config.web,内容如下,放在WEB目录下 <configu

jquery与js函数冲突的两种解决方法

如果您还有别的要求,想继续使用原先的$(),同时还需要与别的类库不冲突的话,还有两种解决方法 其一: jQuery.noConflict(); jQuery(function($) { $("p").click(function() //在函数内继续可以使用jquery类库的$()方法 { alert($(this).text()); }) }) var JsCOM_cr = $("cr"); // 在函数外面,照样可以使用JsCOM.js的$()方法 其二: jQ

win8.1系统升级失败的两种解决方法

win8.1系统升级失败的两种解决方法   方法一: 1. 杀毒软件(建议关闭或者先卸载). 2. 有问题的驱动. 3. 某些使用不兼容wind8.1的外部设备. 解决方法: 1. 首先请确认您的机型是否支持升级到Win8.1 2. 建议您把所有非联想预装的外部设备暂时移除,如鼠标,键盘,打印机,摄像头等等. 3. 建议您备份重要的个人文件,使用一键恢复功能把电脑恢复到出厂状态,操作方法请参考. 4. 卸载可能影响更新的软件和驱动程序,如杀毒软件,电源管理,显卡驱动等等. 5. 安装所有Wind

Win7远程操作时提示“远程桌面服务当前正忙”两种解决方法

  Win7远程操作时提示"远程桌面服务当前正忙"两种解决方法           Win7系统远程桌面操作能够实现远程操控电脑,通过远程连接来进行一些控制,可是有些用户在进行远程连接的时候,输入账号密码无法进入,重新进入就会提示"由于远程桌面服务当前正忙,因此无法完成您尝试执行的任务",遇到这个问题该如何解决呢?下面小编给大家两种解决方法. 解决方法一 看一下你电脑任务管理器此项任务是否还在,如果在的话关掉就行了,很多时候是电脑没有反应过来造成的. 解决办法二 原

win7打开exe文件提示“无法打开exe可执行文件”两种解决方法

  win7打开exe文件提示"无法打开exe可执行文件"两种解决方法          1.打开"计算机"或任意文件夹,点击"组织"-"文件夹和搜索选项"; 2.在"文件夹选项"框中点击"查看"选卡,然后在下面"高级设置"下框中将"隐藏已知文件类型的扩展名"前面的 勾去掉,点击应用并确定; 3.在桌面空白处鼠标右击选择"新建-文本文档&

win7登录不上qq显示登录超时的两种解决方法

  win7登录不上qq显示登录超时的两种解决方法 1.检查下防火墙设置.方法是进入控制面板,点击系统和安全,点击Windows防火墙; 2.双击开后点击左侧的打开或关闭防火墙这一项; 3.在家庭和工作网络位置和公共网络位置选项下全部选择关闭防火墙.设置完后运行QQ试试. 解决方法二: 1.打开QQ登录界面,点击右上角的设置; 2.点开后进入高级设置,这里可以看到可进行网络类型设置和登录服务器类型设置; 3.先进行网络类型设置,如果以前使用代理,现在选不使用代理,如果不使用代理也不行,选择使用浏