у меня странная ситуация при выполнении этого кода в 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;
Спасибо за помощь
Задача ещё не решена.
Других решений пока нет …