WebKit“拒绝设置不安全标头‘内容长度’”

2023-12-10

我正在尝试实现简单的 xhr 抽象,并且在尝试设置 POST 标头时收到此警告。我认为这可能与在单独的 js 文件中设置标头有关,因为当我将它们设置在<script>.html 文件中的标记,效果很好。 POST 请求工作正常,但我收到此警告,并且很好奇为什么。我收到了两个警告content-length and connection标头,但仅限于 WebKit 浏览器(Chrome 5 beta 和 Safari 4)。在 Firefox 中,我没有收到任何警告,Content-Length 标头设置为正确的值,但 Connection 设置为 keep-alive 而不是 close,这让我认为它也忽略了我的 setRequestHeader 调用并生成它自己的。我还没有在 IE 中尝试过这段代码。这是标记和代码:

test.html:

<!DOCTYPE html>
<html>
    <head>
        <script src="jsfile.js"></script>
        <script>
            var request = new Xhr('POST', 'script.php', true, 'data=somedata',  function(data) { 
                console.log(data.text); 
            });
        </script>
    </head>
    <body>
    </body>
</html>

jsfile.js:

function Xhr(method, url, async, data, callback) {
    var x;
    if(window.XMLHttpRequest) {
        x = new XMLHttpRequest();

        x.open(method, url, async);

        x.onreadystatechange = function() {
            if(x.readyState === 4) {
                if(x.status === 200) {
                    var data = {
                        text: x.responseText,
                        xml: x.responseXML
                    };
                    callback.call(this, data);
                }
            }
        }

        if(method.toLowerCase() === "post") {
            x.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
            x.setRequestHeader("Content-Length", data.length);
            x.setRequestHeader("Connection", "close");
        }

        x.send(data);
    } else {
        // ... implement IE code here ...
    }
    return x;
}

它也忽略我的 setRequestHeader 调用并生成自己的

是的standard说它必须:

出于安全原因,如果 header 为 [...],则应终止这些步骤

  • 联系
  • 内容长度

与这些人打交道可能会暴露各种请求走私攻击,因此浏览器总是使用自己的值。没有必要也没有理由尝试设置请求长度,因为浏览器可以根据您传递的数据长度准确地做到这一点send().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebKit“拒绝设置不安全标头‘内容长度’” 的相关文章

随机推荐

  • 使用 TWIG 加载远程文件

    在 Symfony 2 3 中使用 Twig 我需要能够在 Twig 模板中选择远程资源 所以我有一个带有主体块的树枝模板 如下所示 block body include http asset remotelocation co uk te
  • 为什么我的 TabHost 的 FrameLayout 的唯一子级加载了visibility = View.GONE?

    我正在使用 TabHost 来呈现一些选项卡 在 XML 定义中 一切都已设置完毕 通常 RelativeLayout 是 TabHost 的 FrameLayout 的唯一子级 奇怪的是 相对布局总是加载为 View GONE 在XML
  • 如何强制ANTLR解析所有输入CharStream

    我正在使用 ANTLR4 来解析语法文件 当我使用 BaseErrorListener 检测错误时 遇到了问题 当遇到非法输入字符串时 ANTLR会自动匹配相应的分支 然后忽略后续流字符 即使它包含错误 我想检测这个错误 这是我的 g4 文
  • @media min-width 无法被 firefox 8 识别

    我第一次使用媒体查询 一切进展顺利 但似乎遇到了一个奇怪的问题 这是我的CSS media only screen and min width 481px and max width 768px tablet portrait css he
  • 删除窗口或窗体的父级

    如何使一个进程的父进程已设置为我的应用程序的控件 弹出 我的应用程序并成为顶级窗口 我尝试过使用SetParent WindowHandle null 但 IntPtr 它说它是一个不可为空的类型 您正在尝试修改窗口的父窗口 你需要的功能是
  • 登录时或登录后检查 firebase auth 用户角色

    我的 firebase 应用程序有两个不同的角色 user and admin 我在创建过程中分配这些 具体操作如下 const admin require firebase admin const user await admin aut
  • 这些文件是什么,我在使用 gitmerge 工具解决冲突时得到的?

    如何gitmergetool作品 我在进行 git merge 时遇到了冲突 现在我想摆脱这些合并冲突 我正在浏览以获取一些有关如何执行此操作的信息 并且有人建议使用 git mergetool 我从未使用过 git merge 工具 但是
  • 重新打开游戏时如何检查时间是否已过?

    当 tebs 变量在游戏中获得一些值时 协程就会运行 当它起作用时 它会设置timeScale归零并等待一段时间 然后游戏继续继续 问题是我想在游戏关闭和重新打开时检查实时 本地时间 并比较它们以检查时间是否过去 因此协程继续运行或结束 I
  • 派生类对象是否包含基类对象?

    请考虑下面的示例代码 include
  • 标准错误?它是什么?它的常见用途有哪些?

    对句柄 STDERR 的工作原理感到好奇吗 让我们简单地说一下批处理文件以保持简单和集中 我知道许多编程语言都接受 STDERR 所以我不知道是否可能用途有所不同 或者所有编程语言是否有一个共同的功能 如果有人可以提供一些您所见过的常见用法
  • 当转发到 JSP 时,如何检测 Java Servlet 中的 URL?

    我有一个看起来像这样的 servlet public class ExampleServlet extends HttpServlet public void doGet HttpServletRequest request HttpSer
  • 如何从内容处置中获取文件名

    我下载了一个文件作为ajax的响应 如何获取文件名和文件类型content disposition并显示它的缩略图 我得到了很多搜索结果 但找不到正确的方法 download btn click function var uiid this
  • 如何在 C# 中通过 TCP 连接发送整数数组

    我在 Windows 应用程序中在两台计算机之间建立了 TCP 连接 用于来回发送和接收数据 我发送的消息是一组转换为字符串并用 分隔的整数 因此 为了发送我要使用的数据 if dataSend Length gt 0 m writer W
  • 实现容器视图的问题

    我正在尝试遵循查看 iOS 控制器编程指南在我的应用程序中实现容器视图 目前 我只是想加载初始的第一个视图 但第一个控制器中包含的标签没有显示 最后 我希望能够通过使用分段控件来控制容器中显示哪个视图 任何帮助将不胜感激 我的故事板 视图控
  • Windows Mobile 5 SDK 按钮控制

    我是一名相当新手的程序员 正在开发我的第一个 Windows Mobile 应用程序 我发现我的程序没有可用的按钮控件 我以前从未创建过自定义控件 并且我知道这是为我的应用程序获取按钮的唯一方法 这是我的客户的要求 我想知道是否有人可以给我
  • 如何指定跨域策略文件以允许 Flash 从 RTMP (Wowza) 视频流中抓取位图?

    我正在尝试获取在客户端上播放的 Wowza 视频流的位图 快照 如下所示 var bitmapData BitmapData new BitmapData view videoPlayerComponent width view video
  • 无法将多行字符串设置为环境变量

    如何在 VSTS powershell 任务上将多行字符串设置为环境变量 以下代码仅保存字符串的第一行 string xmlstring Get Content Encoding UTF8 Path System DefaultWorkin
  • 非根位置部署的绝对路径

    我通常使用以下方式引用我网站上的任何资产绝对路径这样我就不必担心资产相对于当前文件的位置 img src images flag png img src images flag png 但是 这次我需要将站点托管在非根位置 例如http m
  • 适配器无法与数据映射器一起使用

    我有以下代码 require sinatra require datamapper DataMapper setup default postgres localhost mydb 但是 当我尝试运行它时 我得到 LoadError 没有要
  • WebKit“拒绝设置不安全标头‘内容长度’”

    我正在尝试实现简单的 xhr 抽象 并且在尝试设置 POST 标头时收到此警告 我认为这可能与在单独的 js 文件中设置标头有关 因为当我将它们设置在