gpt4 book ai didi

flash - 带有 Accept header : gets put in request body, 的 URLRequest 不会覆盖默认请求 header

转载 作者:行者123 更新时间:2023-12-01 06:42:15 26 4
gpt4 key购买 nike

一个协作项目有一个 Flash 应用程序,它使用一种 API(一个正在进行的工作,一堆相关的 PHP 方法)。 API 过去用于以 JSON 格式提供数据,但现在我们需要支持另一种格式。有几种方法可以指示我们期望返回的数据的格式。我想选择 HTTP Accept header 以避免重新发明轮子。

在我们的 Flash 应用程序中,我们有一组标准代码负责设置 Accept header 。

var request:URLRequest = new URLRequest(url);
var acceptHeader:URLRequestHeader = new URLRequestHeader("Accept", "application/json");
request.requestHeaders.push(acceptHeader);
request.method = URLRequestMethod.POST;
// add parameters, init a URLLoader, load the request etc.

这在 Internet Explorer 和 Chrome/Chromium 上运行良好 - Web 控制台显示按预期更改的 header (尽管将它们小写)。但是 Firefox/Iceweasel 表现出奇怪的行为。根据内置检查器中的标题部分,标准标题仅通过:
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

运行实时 HTTP header (FF 扩展)并捕获来自应用程序的请求会产生奇怪的结果(忽略不重要的 header 、更改路径等):
POST /path-to-script.phtml?id=1 HTTP/1.1
Host: devserver.com
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
<...>
Referer: http://devserver.com/path-to-flash.swf
Content-Type: application/x-www-form-urlencoded
Accept: application/json

<POST payload>

实际有效载荷是一个 stub ,如 URLRequest不允许更改 GET 的标题方法。由于某种原因,有效载荷和最后三个 header 也缩进了,使它们成为请求正文的一部分,而不是请求 header 。

浏览 Firefox 中的 POST 请求——实际上是在 Debian 上的 Iceweasel 9.01 中,如果这很重要,在 Win7 上的 FF10 中也可以看到——揭示了具有相同症状的其他情况。即上 community.adobe.com ,但是来自 SWF 的请求伴随着 Accept header 和 POST 参数,指示所需的 JSON 格式。

所以,有两个问题:
  • 是否可以真正覆盖通过 Firefox 打开的 SWF 的默认 HTTP header ?我们只是有什么问题吗?
  • 重用这个 HTTP 工具是一种更好的做法,或者我们可能需要坚持使用一个额外的参数并开始将 URL 重写为类似 /api/someObject.<json|xml>/123 的内容。 ?
  • 最佳答案

    var acceptHeader:URLRequestHeader = new URLRequestHeader("Accept", "application/json");

    这对我们有用。谢谢

    关于flash - 带有 Accept header : gets put in request body, 的 URLRequest 不会覆盖默认请求 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9265403/

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