मुझे अगला वर्कअराउंड मिला। POST
हेरफेर करके प्रसंस्करण अनुरोध के बाद आप पुनर्निर्देशन से बच सकते हैंhistory
ऑब्जेक्ट में ।
तो आपके पास HTML फॉर्म है:
<form method=POST action='/process.php'>
<input type=submit value=OK>
</form>
जब आप इस फ़ॉर्म को अपने सर्वर पर संसाधित करते हैं तो आप उपयोगकर्ता को इस तरह हेडर /the/result/page
सेट करके पुनर्निर्देशित करने के बजाय Location
करेंगे:
$cat process.php
<?php
process POST data here
...
header('Location: /the/result/page');
exit();
?>
POST
एड डेटा को संसाधित करने के बाद आप छोटे <script>
और परिणाम प्रस्तुत करते हैं/the/result/page
<?php
process POST data here
render the <script> // see below
render `/the/result/page` // OK
?>
<script>
आप प्रस्तुत करना चाहिए:
<script>
window.onload = function() {
history.replaceState("", "", "/the/result/page");
}
</script>
परिणाम है:
जैसा कि आप देख सकते हैं कि फॉर्म स्क्रिप्ट में POST
एड डेटा है process.php
।
यह स्क्रिप्ट प्रक्रिया POST
डेटा और रेंडरिंग /the/result/page
को एक साथ प्रोसेस करती है :
- कोई पुनर्निर्देशन नहीं
- नही रे
POST
जब आप पृष्ठ (F5) को रिफ्रेश करते हैं, तो डेटा
POST
जब आप ब्राउज़र इतिहास के माध्यम से पिछले / अगले पृष्ठ पर जाते हैं, तो कोई पुनः नहीं
युपीडी
एक अन्य समाधान के रूप में, मैं उपयोगकर्ताओं से हेडर सेटअप करने और बनाने के लिए काम करने की अनुमति देने के लिए मोज़िला फ़ायरफ़ॉक्स टीम से फ़ीचर अनुरोध करने के लिए कहता हूँNextPage
Location
post/redirect/get
पैटर्न अप्रचलित।
संक्षेप में। जब सर्वर प्रक्रिया POST
डेटा को सफलतापूर्वक बनाती है:
- सेट अप
NextPage
बजाय हैडरLocation
- प्रोसेसिंग
POST
फॉर्म डेटा के परिणाम को रेंडर करें क्योंकि यह पैटर्न GET
में अनुरोध के लिए प्रस्तुत करेगाpost/redirect/get
NextPage
हेडर को देखने पर बदले में ब्राउज़र :
- के
window.location
साथ समायोजित करेंNextPage
मूल्य के
- जब उपयोगकर्ता पृष्ठ को रीफ़्रेश करता है तो ब्राउज़र पुनः फॉर्म डेटा के बजाय
GET
अनुरोध पर बातचीत करेगाNextPage
POST
मुझे लगता है कि अगर इसे लागू किया जाता है, तो यह बहुत अच्छा होगा? =)