我正在尝试使用XMLHTTPRequest进行发帖,并收到以下消息:
在以下位置访问XMLHttpRequest 原产地的“ https://some-link” “空”已被CORS政策阻止:对预检请求的响应 没有通过访问控制检查:否'Access-Control-Allow-Origin' 标头出现在请求的资源上。
有类似的线程说要添加CORS标头,而我已经在其中完成了。
我很好奇的是,当转换为AJAX时,这些完全相同的代码可以很好地工作(而不必让其他代码通过CORS配置)。 由于AJAX只是基于JavaScript构建的框架,为什么在不使用AJAX进行编码而仅使用JavaScript进行编码时会显示此消息?
var xhr = new XMLHttpRequest()
xhr.open('POST', url, true)
xhr.send(data)
vs。
$.ajax({
type: 'POST',
url: 'url',
data: data
});
后期工作正常。 Ajax中有哪些其他/隐藏的实现?
答案 0 :(得分:-1)
打开DOM Inspector,单击请求并找到这两个请求之间的区别。会有所不同。
“空”起源可能是因为您将IFRAME与属性沙箱一起使用,对吗?要解决此问题,您需要确保
您可以像这样使用命令行curl进行检查
curl 'https://www.example.com/my-url-that-fails-here/' -X OPTIONS -H 'Pragma: no-cache' -H 'Access-Control-Request-Method: GET' -H 'Origin: null' -H 'Accept-Encoding: gzip, deflate, br' -H 'Accept-Language: en-US,en' -H 'User-Agent: Mozilla/5.0' -H 'Accept: */*' -H 'Access-Control-Request-Headers: x-requested-with' --compressed -D - -O /dev/null
这应该非常接近真实的浏览器。