【问题标题】:Automated browser requests: detection, ajax vs iframes自动浏览器请求:检测、ajax 与 iframe
【发布时间】:2011-06-07 10:20:03
【问题描述】:

我正在执行自动(在预定义的时间,无需用户干预)请求,似乎 xmlHttpRequest 包含额外的 http 标头。

由于我希望服务器无法自动识别这些请求(必须与普通用户导航完全相同),我是否需要改用 iframe,或者我仍然可以使用 ajax 并删除/设置这些标题? (目前使用jQuery)

如果我确实需要使用 iframe,因为我的“应用”是 chrome 扩展程序,有什么问题需要注意吗?

【问题讨论】:

    标签: javascript ajax iframe http-headers google-chrome-extension


    【解决方案1】:

    您可以使用setRequestHeader 修改一些标题。根据spec,不能设置以下标头:

    • 接受字符集
    • 接受编码
    • 连接
    • 内容长度
    • 饼干
    • Cookie2
    • 内容传输编码
    • 日期
    • 期待
    • 主机
    • 保持活动状态
    • 参考
    • TE
    • 预告片
    • 传输编码
    • 升级
    • 用户代理
    • 通过

    或者如果标题的开头是 代理的不区分大小写匹配 - 或 Sec- (包括当标题只是 Proxy-或Sec-)。

    如果这不是您想要的,那么您必须使用 iframe,我使用 fb-exporter Chrome 扩展程序来做到这一点。后来我把它改成了 XHR,因为它可以正常工作。

    【讨论】:

    • 谢谢,这可能有用。 Referer 可能是一个问题(iframe 也是如此,但我可以解决这个问题)。 X-Requested-With 怎么样 - 可以完全删除吗?
    • 任何以 x- 开头的标题都是非标准的,因此我相信可以通过将其设置为空字符串来删除它。 req.setRequestHeader('X-Requested-With', '')
    • (在 chrome 和 FF 上)我仍然看到正在发送的标头,只是空的:|
    • 我不知道 Chrome 是否会阻止您设置它,但您是否在拨打 open() 后立即拨打 setRequestHeader ?
    • 我使用了 jQuery,并通过 $.ajax() 参数和 onBeforeSend 函数进行了尝试
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    相关资源
    最近更新 更多