CORS 头缺少 'Access-Control-Allow-Origin

XMLHttpRequest cannot load http://localhost:8080/UP/tongHua?_search=false&nd=1477198221063&rows=10&page=1&sidx=&sord=asc. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://127.0.0.1:8080' is therefore not allowed access.

主线程中同步的 XMLHttpRequest 已不推荐使用,因其对终端用户的用户体验存在负面影响。更多帮助请见 http://xhr.spec.whatwg.org/ jquery-3.1.0.min.js:4:15668
已拦截跨源请求:同源策略禁止读取位于 http://127.0.0.1:8080/UP/tongHua?_search=false&nd=1477197878296&rows=10&page=1&sidx=&sord=asc 的远程资源。(原因:CORS 头缺少 'Access-Control-Allow-Origin')。


之前写好可以正常调试的代码突然不能访问,很是奇怪。浏览器还提示了上面的错误。

百度了下说是跨域访问安全控制,不能读到相应的数据。纳闷是不是几个月不碰代码,浏览器安全策略升级,导致不能访问。

仔细看网上的内容,导致明白问题的原因是ajax跨域问题。


你写Ajax的是页面一,而请求的是页面二


我的js是这么写的:

var baseUrl = "http://127.0.0.1:8080/UP/";

$(document).ready(function() {
	var grid_selector = "#id_physicalMachine_table",
		page_selector = "#id_physicalMachine_page",
		queryUrl = baseUrl + "tongHua";
	jQuery(grid_selector).jqGrid({

访问的地址是:

http://localhost:8080/UP/

很显然,我的baseurl是127.0.0.1,访问的是localhost,尽管没什么区别,但是ajax请求时就会以为是两个不同的地址请求信息,为了安全考虑,就拒绝了我的访问。

我没有去加

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

而是直接将访问地址改成:

http://127.0.0.1:8080/UP/


大功告成,就是这样!

顺便提一下,开发的时候将chrome设置为禁用缓存,修改js调试要方便很多

你可能感兴趣的:(Java)