加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ajax之cors跨域

发布时间:2020-12-16 01:46:01 所属栏目:百科 来源:网络整理
导读:跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源。而这种访问是被同源策略所禁止的。CORS系统定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。 它是一个妥协,有更大的灵活性,但
跨域资源共享(CORS )是一种网络浏览器的技术规范,它为Web服务器定义了一种方式,允许网页从不同的域访问其资源。而这种访问是被同源策略所禁止的。CORS系统定义了一种浏览器和服务器交互的方式来确定是否允许跨域请求。 它是一个妥协,有更大的灵活性,但比起简单地允许所有这些的要求来说更加安全。
而W3C的官方文档目前还是工作草案,但是正在朝着W3C推荐的方向前进。

简言之,CORS就是为了让AJAX可以实现可控的跨域访问而生的。

jsonp只支持get形式的访问,cors支持get,post等多种形式!

Tomcat服务器下使用cors跨域必须:

下载cors-filter-1.7.jar,java-property-utils-1.9.jar这两个库文件,放到tomcat的lib目录下和cors2的lib目录下

下面是我想使用跨域的两个网站:

cors项目的ajax请求:

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="jquery-1.4.2.js"></script>
<script>
function go() {
	$.get("http://localhost:8080/cors2/user/login?id=1&timeStamp="+new Date().getTime(),function(data) {
		alert(data);
	});
}
</script>
</head>
<body>
	cors
	<input type="button" value="提交" id="submit" onclick="go()"/>
</body>
</html>


cors项目想访问cors2项目

cors2项目的web.xml配置中配置如下filter:

<filter>
		<filter-name>CORS</filter-name>
		<filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class>
		<init-param>
			<param-name>cors.allowOrigin</param-name>
			<param-value>*</param-value>
		</init-param>
		<init-param>
			<param-name>cors.supportedMethods</param-name>
			<param-value>GET,POST,HEAD,PUT,DELETE</param-value>
		</init-param>
		<init-param>
			<param-name>cors.supportedHeaders</param-name>
			<param-value>Accept,Origin,X-Requested-With,Content-Type,Last-Modified</param-value>
		</init-param>
		<init-param>
			<param-name>cors.exposedHeaders</param-name>
			<param-value>Set-Cookie</param-value>
		</init-param>
		<init-param>
			<param-name>cors.supportsCredentials</param-name>
			<param-value>true</param-value>
		</init-param>
	</filter>
	<filter-mapping>
		<filter-name>CORS</filter-name>
		<url-pattern>/*</url-pattern>
	</filter-mapping>

主要就是access-control-allow-origin请求头的拦截设置。

cors2的spring mvc的controller:

@Controller
@RequestMapping(value = "/user")
public class UserController {

	@RequestMapping(value = "/login",method = RequestMethod.GET)
	@ResponseBody
	public String toLoginUi(int id) {
		System.out.println(id + ":cors跨域成功!");
		return "success";
	}

}

现在在:http://localhost:8080/cors/cors.html下通过ajax访问cors2的:http://localhost:8080/cors2/user/login

结果如下:

1:cors跨域成功!

说明跨域已可访问!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读