我尝试使用以下代码将带有数据的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包装器时,请求有效。当我不使用包装器时,请求会抛出错误#2032。我认为它没有发送快照ID,但我不知道为什么。
在html包装器中调试时,请求是否会发送数据有明显的原因,并且在html包装器外调试时无法执行此操作?
fuzzykittens有一个带有
的crossdomain.xml<allow-access-from domain="*" secure="false"/>
答案 0 :(得分:2)
我发现了这个问题。 Adobe非常简短地提到了URLRequest的livingoc:
中的这个警告注意:如果在Flash Player中运行且引用的表单没有正文,则Flash Player会自动使用GET操作,即使该方法设置为URLRequestMethod.POST也是如此。因此,建议始终包含“虚拟”主体,以确保使用正确的方法。
当我刚刚在没有正文的情况下运行SWF时,快照ID未作为post var发送,因此服务器响应不同。
这绝对不是我想要的答案,但知道发生了什么感觉很好。感谢您的评论。