javascript - 通过 Firefox 控制台的头部请求被阻止
问题描述
在python中,如果我这样做
import requests
x = requests.head('https://www.google.com')
print(x.headers)
这有效,我收到了回复。另一方面,如果我在 Firefox 的空白选项卡上打开开发者控制台,然后执行
var xmlhttp = new XMLHttpRequest();
xmlhttp.responseType = "json"
xmlhttp.open("HEAD", "https://www.google.com", true)
xmlhttp.onreadystatechange= function() {
if(xmlhttp.readyState==4) {
console.log(xmlhttp.getAllResponseHeaders())
}
}
xmlhttp.send()
我收到此错误:
跨域请求被阻止:同源策略不允许在https://www.google.com/读取远程资源。(原因:缺少 CORS 标头“Access-Control-Allow-Origin”)。
如果我在 Firefox 上打开网站然后通过控制台发送请求,则不会出现该错误。从我到目前为止所读到的内容来看,firefox 尊重 CORS,而其他工具(如邮递员或 python 请求)则不尊重。如果我尝试添加此行,Firefox 甚至会阻止:
xmlhttp.setRequestHeader("Host", "https://www.google.com");
反正有没有让这个工作与 Firefox 一起工作?我需要通过 Firefox 发送头部请求来做一些延迟测量(不能使用任何其他方法,除非没有办法使这项工作)
我还尝试通过浏览器控制台中的 ajax 执行此操作:
$.ajax({
url: "https://www.google.com",
type:'HEAD',
dataType: "jsonp",
crossDomain:true,
success: function(data){
alert(data);
return false;
}
})
但没有运气。
解决方案
推荐阅读
- python - 我可以检查一个元素是否存在于特定索引的嵌套列表中吗?
- ruby-on-rails - 如果我有一个指向 Wix 的 www 域,我可以将一个子域指向 Heroku,这将如何影响 SSL?
- xamarin.forms - 为 Xamarin 表单添加身份验证器
- python - 具有多个变量的 SQL UPDATE
- python - 读取 csv 文件的标题并查看它是否与字典键匹配,然后将该键的值写入行
- c# - 在 Asp.Net API 中使用多个 Get()
- javascript - 在文本中查找准确的单词,不包括引用的单词
- html - 如何在html中的输入类型日期中添加颜色
- reactjs - 从没有 ReactDOM.findDOMNode 的 React 子元素获取 DOM 节点
- c# - 我在情节提要中创建了一个按钮事件,但出现错误