---
title: "Hur använder man en motsvarighet till location.replace i perl?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/perl-ruby/180511-hur-använder-man-en-motsvarighet-till-location-replace-i-perl"
topic: "Perl & Ruby"
topic_url: "https://www.webforum.nu/amne/perl-ruby"
author: "haider"
published: "2009-10-01T11:54:53.000Z"
updated: "2009-10-05T08:33:19.000Z"
replies: 12
views: 1880
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/perl-ruby/180511-hur-använder-man-en-motsvarighet-till-location-replace-i-perl"
---

# Hur använder man en motsvarighet till location.replace i perl?

## #1 — haider, 2009-10-01T11:54Z

Jag sökte på google och fick lite träffar om att kunna använda location.replace i perl sammanhang.

Perl skriptet ska alltså vid tillfällen då den skickar vidare en användare till en annan sida eliminera möjligheten till att backa och i HTML världen är ju location.replace ett sätt.

Några tips?

Permalänk: https://www.webforum.nu/p/180511

## #2 — Jojoxx, 2009-10-01T12:53Z

Nej,

location.replace är JavaScript. Det finns inget hållbart sätt att göra detta via (enbart) serverside-script.

Permalänk: https://www.webforum.nu/p/2206613

## #3 — haider, 2009-10-01T14:08Z

Tack Jojoxx,

men kan man genom perl göra javascript anrop, att man simulerar det på något vis?

Permalänk: https://www.webforum.nu/p/2206621

## #4 — nitro2k01, 2009-10-01T14:12Z

Varför ska man inte kunna backa?

Permalänk: https://www.webforum.nu/p/2206622

## #5 — haider, 2009-10-01T14:19Z

Jo, rent generellt har location.replace fördelar som att man i vissa fall vill kontrollera när man ska kunna besöka en viss sida. Säg att en viss sida inte ska besökas om man inte även anger en parameter. Så skulle man i den sidan - som i det här fallet är ett perl-script, alltså <https://www.sida/cgi-bin/skript.pl> \- ha en åtgärd som kontrollerar om sidan/perl-filen ska laddas upp eller inte, så kvarstår problemet att man kan backa tillbaka till sidan för att sen slungas ut igen. Då får man dubbelbacka eller nåt för att ta sig ur.
Men location.replace skulle ju eliminera detta helt.

Jag eftersöker helt enkelt en perl lösning för att plocka bort en sida ur browser cachen.

Permalänk: https://www.webforum.nu/p/2206623

## #6 — GunnarD, 2009-10-01T14:29Z

Kan du inte skicka headern "Location: ....."?

/edit: testade just in FF och då kan man inte backa tillbaka till URL som genererar "Location: ...".

Permalänk: https://www.webforum.nu/p/2206624

## #7 — haider, 2009-10-01T17:56Z

Gunnar: det låter som det jag är ute efter, men pratar du om en Perl lösning? Jag vet att man i PHP kan göra så här:

```
header("Location: http://www.example.com/");
```

Så det du pratar om låter som PHP eller?
För jag vill kunna ange <https://www.sida.se/cgi-bin/perl.pl> och så ska perl skriptet känna igen att man har angett scriptfilen som sökväg och då ska scriptet skicka vidare besökaren.

Permalänk: https://www.webforum.nu/p/2206648

## #8 — metalboy, 2009-10-01T18:02Z

I Perl skriver du ut headers precis som vilken text som helst... Headern skrivs ut först av allt, och efterföljs av två radbrytningar. Därefter kommer ev innehåll.

Edit:
Exempel: <http://johnbokma.com/perl/redirectioncgiscript.html>

Permalänk: https://www.webforum.nu/p/2206649

## #9 — haider, 2009-10-01T19:01Z

Metalboy, du anar inte hur glad jag är åt den länken - jag har sett detta ämne tidigare men inte riktigt förstått att det är samma sak.
Det är faktiskt så det avlöste ett gammalt problem jag hade och tydligen rör det sig om precis samma sak.

Just det gamla problemet behövde en Status: 301 Moved Permanantly medan exemplet i sidan du gav mig använder en Status: 302 Moved.

Beteendemässigt upplever jag att de gör samma sak. Är skillnaden vad sökmotorer ska tolka länkarna som? Eller finns det nån annan skillnad?

Permalänk: https://www.webforum.nu/p/2206651

## #10 — colione, 2009-10-01T22:15Z

> **[haider skrev:](https://www.webforum.nu/p/1482601)**
>
> Metalboy, du anar inte hur glad jag är åt den länken - jag har sett detta ämne tidigare men inte riktigt förstått att det är samma sak.
> Det är faktiskt så det avlöste ett gammalt problem jag hade och tydligen rör det sig om precis samma sak.
> 
> Just det gamla problemet behövde en Status: 301 Moved Permanantly medan exemplet i sidan du gav mig använder en Status: 302 Moved.
> 
> Beteendemässigt upplever jag att de gör samma sak. Är skillnaden vad sökmotorer ska tolka länkarna som? Eller finns det nån annan skillnad?

301 och 302 gör för dig som användare ingen skillnad. Det är mest för program och sökmotorer som responskoder är intressant. Google kommer exempelvid börja ersätta länkar till den gamla sidan med den nya vid en 301. 302 brukar de lägga i relation till varandra så de vet när statusen ändras.

Permalänk: https://www.webforum.nu/p/2206668

## #11 — Jojoxx, 2009-10-02T11:57Z

Jag missforstod nog vad du ville haider. Jag trodde du sökte ett sätt ett sätt att se till att ditt perlscript inte skall sparas i history'n. Vilket åtminstone jag inte hittat nåt fungerande alternativ till.

Att skicka "HTTP/1.1 302 Found" kan fungera i vissa lägen, dock inte alltid. Jag vet att jag testat att göra det i en webshopsapplikation där jag vill förhindra dubbelpostningar, och att anropet till varukorgen inte skall sparas så att om man klickar köp på en artikel (som postas till varukorgen) och användaren sedan klickar "back" så skall man inte backa posten till varukorgen utan snarare till steget innan sidan där den aktuella artikeln finns. Jag provade att posta till ett script som lade produkten i varukorgen, och sedan returnerade en http-302 för att visa varukorgen. Detta fungerade dock ett par gånger, sedan verkade det som att webbläsaren vägrade att posta till en url som var tidigare känd som "flyttad" och snarare efterfrågades den url som 302 pekade på.

Permalänk: https://www.webforum.nu/p/2206691

## #12 — haider, 2009-10-03T20:56Z

Tack Colione

Jojoxx: Jo, men det verkar som om den lösning jag använder nu ..

```
print "Status: 301 Moved Permanantly\nLocation: $FORM{url}\n\n";
```

 gör just detta, att den tar bort scriptet från historyn. Klickar man alltså på skriptet = en adress som pekar till skriptet, så hamnar man dit skriptet skickar en. Backar man så hamnar man i sidan som pekade till perl scriptet. I javascript termer så är detta ju en location.replace eller hur?

Permalänk: https://www.webforum.nu/p/2206808

## #13 — Jojoxx, 2009-10-05T08:33Z

Nästan. Det finns dock en markant skillnad. När en webbläsare får en 301 från servern så betyder det enligt standard att webbläsaren får spara denna adress (både orginal-adressen och den adress dit ompekningen sker). När användaren nästa gång klickar på en länk, eller postar ett formulär till orginaladressen kan webbläsaren istället använda den "nya" adressen. D.v.s. ditt script som returnerat 301 aldrig mer blir anropat. Det webbservern egentligen talat om för webbläsaren är nämligen att "Denna resurs finns inte längre, försök inte att använda den".

Problemet är att även 302 (moved temporary) verkar fungera på samma sätt. Antagligen eftersom webbläsaren antar att "eftersom resursen inte fanns nyss kommer den säkert inte att finnas under denna session, vi tar den nya adressen istället".

Permalänk: https://www.webforum.nu/p/2206947

---

Tråden på webben: https://www.webforum.nu/amne/perl-ruby/180511-hur-använder-man-en-motsvarighet-till-location-replace-i-perl
