Internert Explorer / Edge flex метод перенаправления отправляет POST вместо GET

у меня странная ситуация при выполнении этого кода в Internet Explorer (11) и Flash Player 26.0.0.151, вот гибкий код

Код Flex:

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">
<mx:Script><![CDATA[
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;

private function loginUser():void {

var http:HTTPService = new HTTPService();
http.url = "http://localhost/flex_test/redirect.php";
trace("calling login url " + http.url);
http.method = "POST";
http.addEventListener(ResultEvent.RESULT, loginSuccessHandler);
http.addEventListener(FaultEvent.FAULT, loginFailureHandler);
var req:URLVariables = new URLVariables();
req.j_username = "login";
req.j_password = "password";
http.request = req;
http.send();
}

private function loginSuccessHandler(event:ResultEvent):void {
trace("loginSuccessHandler");
var resultMsg:String = String(event.result);
resultLabel.text = resultMsg;
}

private function loginFailureHandler(event:FaultEvent):void {
trace("loginFailureHandler");
trace("HTTP login error: event=" + event);
resultLabel.text = "Error";
}
]]></mx:Script>
<mx:Button click="loginUser()" label="Say Hello"/>
<mx:Label id="resultLabel" text=""/>
</mx:Application>

PHP-код:

1) redirect.php

 <?php
header('Location: http://localhost/flex_test/redirected.php');
exit;

2) redirected.php

<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
echo "goes POST";
} else  {
echo "goes GET";
}

При использовании Internet Explorer и Flash Player 25.0.0.148, кажется, все в порядке, и отображается сообщение «идет GET» Проблема не возникает в Firefox и Chrome даже с Flash Player 26.0.0.151

Можете ли вы что-нибудь посоветовать, как решить эту проблему — и есть ли идеи, почему отправлять POST вместо GET в браузере IE? Может быть, это связано с https://nvd.nist.gov/vuln/detail/CVE-2017-3085#vulnDescriptionTitle

но это правильное поведение для отправки POST после перенаправления, даже если мы изменим код redirect.php на:

<?php
header('Location: http://plll0284/flex_test/redirected.php', true, 303);
exit;

Спасибо за помощь

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]