1

我正在尝试使用以下代码将带有数据的 POST 请求发送到另一个域:

_snapshot_id = 1369022400;
var urlRequest:URLRequest = new URLRequest("https://fuzzykittens/radar");
urlRequest.method = URLRequestMethod.POST;
urlRequest.contentType = "application/x-www-form-urlencoded";

//set variables for post
var postVars:URLVariables = new URLVariables();
postVars.snapshot = String(_snapshot_id);
urlRequest.data = postVars;

//initialize weather proccess request
weatherProcRequest = new URLLoader(urlRequest);

weatherProcRequest.addEventListener(Event.COMPLETE,
    weatherProcRequest_CompleteHandler);
weatherProcRequest.addEventListener(IOErrorEvent.IO_ERROR,
    weatherProcRequest_ErrorHandler);
weatherProcRequest.addEventListener(SecurityErrorEvent.SECURITY_ERROR,
    weatherProcRequest_ErrorHandler);

weatherProcRequest.load(urlRequest);

当我将 flex 编译器设置为使用 HTML 包装器时,请求有效。当我不使用包装器时,请求会引发 io 错误 #2032。我认为它没有发送快照 ID,但我不知道为什么。

是否有任何明显的原因导致请求在 html 包装器中调试时会发送数据,而在 html 包装器外部调试时却无法发送数据?

模糊小猫有一个 crossdomain.xml 与

<allow-access-from domain="*" secure="false"/>
4

1 回答 1

2

我发现了这个问题。Adobe 在 URLRequest 的 livedoc 中非常简要地提到了这个警告:

注意:如果在 Flash Player 中运行并且引用的表单没有正文,则 Flash Player 会自动使用 GET 操作,即使该方法设置为 URLRequestMethod.POST。因此,建议始终包含一个“虚拟”主体,以确保使用正确的方法。

当我只是在没有正文的情况下运行 SWF 时,快照 ID 没有作为 post var 发送,因此服务器响应不同。

这绝对不是我想要的答案,但知道发生了什么感觉很好。谢谢您的意见。

于 2013-05-31T15:19:58.960 回答