gpt4 book ai didi

javascript - POST Absolute URI 在使用 Squid3 代理时由 XmlHttpRequest 发送到服务器

转载 作者:行者123 更新时间:2023-12-03 13:37:15 26 4
gpt4 key购买 nike

我现在从我正在开发的 Chrome 扩展(普通 JavaScript)发送 http 请求时遇到了奇怪的问题。这是 发布 请求 XmlHttpRequest (来自 background.js ),网址如下:

http://host.com/postform/upload

我也从普通网页(不是 chrome 扩展)发送此请求,重要的是,如果我打开开发者工具并检查我的请求的网络选项卡(选择 原始 标题显示),我会在那里看到第一个标题:
POST /postform/upload HTTP/1.1

在我启用代理而不是直接连接之前它工作正常。为此,我在我的 Ubuntu 上使用 squid3。使用代理时请求之间只有一件事不同 - 它使 HTTP 服务器返回 404 未找到 - 仅在使用代理时..

当我强制 Chrome 使用基于 的代理时鱿鱼3 (我在我的 chrome 扩展程序中为此使用 PAC 脚本),我的请求将不起作用。我检查了很多次,并尽我所能减少请求正文中的任何差异,而我现在只剩下第一个 header 。

当代理发送的请求处于事件状态时(从开发人员工具的网络选项卡,从后台页面打开),它看起来像这样:
POST http://host.com/postform/upload HTTP/1.1

我试过使用 chome.webRequest.onBeforeSendHeaders API,但这没有帮助。我还尝试从 中的 URL 中删除主机名XmlHttpRequest.open 但这没有帮助。

是的,无论如何我都会发送正确的 Host 和 Origin header 。这可能是我的 squid3 配置中的问题,或者我应该在我的 JavaScript 中更改什么?

更新
现在意识到鱿鱼无论如何都不是问题,问题是 发布 请求包含完整的 uri ( http://.. .) 而不是“路径”。 获取 工作正常。这太痛苦了。

我不能使用 iframe变通方法。我的问题是什么?

最佳答案

使用 XHR您的 Chrome 扩展程序中的 API,您需要通过在 "permissions" 中指定目标主机的 URL 来请求目标主机的权限。 list 属性。例如,如果目标主机(您要向其发送 XHR 请求)是 http://www.example.org ,那么您的 list 应包含以下代码行。

...
"permissions" : {
"http://www.example.org",
...
}

如果您已经这样做了,那么显然,错误在后端部分。另请阅读 match patterns允许使用单个字符串匹配多个 URL - 例如, *://www.example.org/* .

关于javascript - POST Absolute URI 在使用 Squid3 代理时由 XmlHttpRequest 发送到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35004586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com