Перенаправление IE 302 проблема заголовка без Кэшей

В качестве примера того, что я имел в виду с комментарием выше (используя объект FormData), я быстро соединил демонстрацию, чтобы указать, как вы можете достичь поставленной цели. Нет jQuery, просто простой, ванильный Javascript, но вы можете легко (я уверен) изменить его, чтобы использовать jQuery, если вам нужно.

<?php
    if( 

В качестве примера того, что я имел в виду с комментарием выше (используя объект FormData), я быстро соединил демонстрацию, чтобы указать, как вы можете достичь поставленной цели. Нет jQuery, просто простой, ванильный Javascript, но вы можете легко (я уверен) изменить его, чтобы использовать jQuery, если вам нужно.

[110]SERVER['REQUEST_METHOD']=='POST' ){ ob_clean(); echo "process the request, send a response, live long & prosper!"; exit(); } ?> <!DOCTYPE html> <html lang='en'> <head> <meta charset='utf-8' /> <title>multiple forms: one submit</title> <script> const submitall=function(e){ const callback=function(r){ console.info( 'response: %o',r ) } const ajax=function(url,data,callback){ let xhr=new XMLHttpRequest(); xhr.onreadystatechange=function(){ if( this.readyState==4 && this.status==200 )callback( xhr.response ); }; xhr.open( 'POST', url, true ); xhr.send( data ) }; /* add all data from each form to this object */ let fd=new FormData(); /* get references to all forms */ let oCol=document.querySelectorAll( 'form' ); /* process each form */ for( let n in oCol ){ if( oCol[ n ].nodeType==1 ){ let tmp={}; for( i in oCol[ n ].elements ){ if( typeof( oCol[n][i] )!='undefined' && oCol[n][i].nodeType==1 ){ tmp[ oCol[n][i].name ]=oCol[n][i].value; } } fd.append( oCol[n].name, JSON.stringify( tmp ) ); } } ajax.call( this, location.href, fd, callback ) } document.addEventListener('DOMContentLoaded',function(){ document.getElementById('master').onclick=submitall; }); </script> </head> <body> <input type='button' id='master' value='Gather all & submit' /> <form name='add_answer1' id='add_answer1'> <div class='table-responsive'> <table class='table table-bordered' id='dynamic_field1'> <tr> <label>question 1</label> <td> <input type='text' name='answer[]' placeholder='Enter your Answer' value='answer 1' class='form-control name_list' /> <input type='hidden' name='id[]' placeholder='id' value='id 1' class='form-control name_list' /> <input type='hidden' name='dg_no[]' placeholder='dg_no' value='dg_no 1' class='form-control name_list' /> <input type='hidden' name='code_no[]' placeholder='code_no' value='code_no 1' class='form-control name_list' /> <input type='hidden' name='question[]' placeholder='question' value='question 1' class='form-control name_list' /> </td> </tr> </table> <button type='button' name='add' id='add1' class='btn btn-success'>Add More</button> </div> </form> <form name='add_answer2' id='add_answer2'> <div class='table-responsive'> <table class='table table-bordered' id='dynamic_field2'> <tr> <label>question 2</label> <td> <input type='text' name='answer[]' placeholder='Enter your Answer' value='answer 2' class='form-control name_list' /> <input type='hidden' name='id[]' placeholder='id 2' value='id 2' class='form-control name_list' /> <input type='hidden' name='dg_no[]' placeholder='dg_no 2' value='dg_no 2' class='form-control name_list' /> <input type='hidden' name='code_no[]' placeholder='code_no 2' value='code_no 2' class='form-control name_list' /> <input type='hidden' name='question[]' placeholder='question 2' value='question 2' class='form-control name_list' /> </td> </tr> </table> <button type='button' name='add' id='add2' class='btn btn-success'>Add More</button> </div> </form> <form name='add_answer3' id='add_answer3'> <div class='table-responsive'> <table class='table table-bordered' id='dynamic_field3'> <tr> <label>question 3</label> <td> <input type='text' name='answer[]' placeholder='Enter your Answer' value='answer 3' class='form-control name_list' /> <input type='hidden' name='id[]' placeholder='id 3' value='id 3' class='form-control name_list' /> <input type='hidden' name='dg_no[]' placeholder='dg_no 3' value='dg_no 3' class='form-control name_list' /> <input type='hidden' name='code_no[]' placeholder='code_no 3' value='code_no 3' class='form-control name_list' /> <input type='hidden' name='question[]' placeholder='question 3' value='question 3' class='form-control name_list' /> </td> </tr> </table> <button type='button' name='add' id='add3' class='btn btn-success'>Add More</button> </div> </form> <form name='add_answer4' id='add_answer4'> <div class='table-responsive'> <table class='table table-bordered' id='dynamic_field4'> <tr> <label>question 4</label> <td> <input type='text' name='answer[]' placeholder='Enter your Answer' value='answer 4' class='form-control name_list' /> <input type='hidden' name='id[]' placeholder='id 4' value='id 4' class='form-control name_list' /> <input type='hidden' name='dg_no[]' placeholder='dg_no 4' value='dg_no 4' class='form-control name_list' /> <input type='hidden' name='code_no[]' placeholder='code_no 4' value='code_no 4' class='form-control name_list' /> <input type='hidden' name='question[]' placeholder='question 4' value='question 4' class='form-control name_list' /> </td> </tr> </table> <button type='button' name='add' id='add4' class='btn btn-success'>Add More</button> </div> </form> </body> </html>
6
задан Andrzej Doyle 4 November 2009 в 11:24
поделиться

2 ответа

Fascinating. This is indeed an IE issue with no direct workaround. The problem is that IE will unconditionally add a Cache-Control: no-cache request header (or a Pragma: no-cache request header if you have a proxy) to a HTTP POST request.

This was doubtless introduced in IE over a decade ago to accomodate buggy proxy servers which did not properly handle HTTP POST requests and would incorrectly return cached responses.

A quirk of IE is that when you redirect, the no-cache headers are re-added to the redirected request. Hence, in your case, your redirected request also sends the "no-cache" request header carried over from the POST request.

Unfortunately, there's no direct workaround for this. You could redirect IE users to an interstitial page that uses JavaScript to redirect them back to the original page. (Don't use META REFRESH though, because that ALWAYS sends no-cache requests).

3
ответ дан 17 December 2019 в 20:36
поделиться

Походит на ошибку в IE мне. Это обсуждение звучит подобным. Вы могли, возможно, попытаться передать 301 или 307 ответов обратно, чтобы видеть, отвечают ли они по-другому.

-1
ответ дан 17 December 2019 в 20:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: