java 设置允许ajax XMLHttpRequest 请求跨域访问

时间:2022-08-29 09:46:50

怎样才能算跨域?协议,域名,端口都必须相同,才算在同一个域。

方案1:

使用XMLHttpRequest...  异步请求不能跨域访问,除非要访问的网页响应头信息设置为允许跨域访问。

将网页设置为允许跨域访问的方法如下:

Response.setHeader("Access-Control-Allow-Origin", "*");

或指定域名下可以访问:

Response.setHeader("Access-Control-Allow-Origin", "http://www.1688hot.com:80");

网上很多资料说使用Response.addHeader添加头信息,在spring项目中需注意:
当提交方式非get时(请求头存在Origin项信息[Origin与Referer功用类似,Origin只用于Post请求,而Referer则用于所有类型的请求]spring-web:4.3.2.RELEASE 中CorsFilter过滤器会默认设置(Access-Control-Allow-Origin=*)
如果在程序中再执行Response.setHeader("Access-Control-Allow-Origin", "*"),就会出现跨域头信息重复问题(实际返回了两个一样的头信息),异常如下
java 设置允许ajax   XMLHttpRequest 请求跨域访问

 

方案2:

使用 jsonp 请求实现

 

其他跨域头信息说明:
Access-Control-Allow-Credentials:true/false    是否允许浏览器附带身份凭证的请求(如cookies),
客户端也需要相应配置确定携带身份凭证信息    xhrFields: {withCredentials: true}

Access-Control-Allow-Methods:GET,POST       允许客户端发起请求的方法
Access-Control-Allow-Headers:                      允许客户端添加的头信息项
参考文献:https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Access_control_CORS