首页 > 解决方案 > 通过 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;
    }
})

但没有运气。

标签: javascriptajaxfirefoxpython-requestshead

解决方案


推荐阅读