ugrás a tartalomhoz

Ajax megoldások

Tanul0 · 2010. Nov. 1. (H), 15.10
Üdvözletem!

Elkezdtem ajax-al foglalkozni, és az lenne a kérdésem, hogy ki milyen megoldásokat használ. Nagyon sok oldalon látom, hogy domain.hu/ajax/ajaxmuvelet viszont ha megpróbálom közvetlenül megnyitni, akkor átirányít, vagy hiba üzenetet dob. Én jelenleg a jquery ajax szolgáltatásait használom. Abból is a load() függvényt használom leggyakrabban pl egy naptárhoz, hogy oldalújratöltés nélkül tudjanak lapozgatni benne. Milyen eljárást ajánlanátok arra, hogy a domain.hu/ajax/calendar-t ne tudják közvetlenül elérni, csak is kizárólag a jquery?

Minden ötletet szivesen várok! Üdv!
 
1

Milyen eljárást ajánlanátok

kuka · 2010. Nov. 1. (H), 16.01
Milyen eljárást ajánlanátok arra, hogy a domain.hu/ajax/calendar-t ne tudják közvetlenül elérni
Megvalósíthatatlan. De megnehezíthető.

Találj ki neki egy egyéni HTTP fejlécet, például X-Tanul0-AJAX-keres: ez-telleg-az-enyim, aztán szerver oldalon ellenőrizd:

var http=XMLHttpRequest()
http.open('GET','kalendarium.php',false)
http.setRequestHeader('X-Tanul0-AJAX-keres','ez-telleg-az-enyim')
http.send(null)

<?php

if ($_SERVER['HTTP_X_TANUL0_AJAX_KERES']!='ez-telleg-az-enyim') {
  header('Status: 403 Forbidden');
  exit;
}

// ...
Ezt a böngésző címsorából lehetetlen leutánozni, de böngésző kiegészítőkkel egyszerű.
2

Igen sejtettem, mivel kliens

Tanul0 · 2010. Nov. 1. (H), 16.32
Igen sejtettem, mivel kliens oldalon zajlik a dolog, de ez nem rossz megoldás. Csak akkor bele kell lesnem a jquery doksijaiba, hogy azzal hogyan tudok http fejlécet küldeni. Köszönöm.
3

Elég annyi, hogy post-tal

inf · 2010. Nov. 1. (H), 17.12
Elég annyi, hogy post-tal hívod meg, és kizárod a get-et szerver oldalon. Felesleges a header.
4

jQuery

Poetro · 2010. Nov. 1. (H), 17.51
A jQuery eleve átad az AJAX kérését jelző HTTP fejlécet
xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
, és csak ezt kell vizsgálni.
if (empty($_SERVER['HTTP_X_REQUESTED_WITH']) || $_SERVER['HTTP_X_REQUESTED_WITH'] != 'XMLHttpRequest') {
  echo 'Method Not Allowed';
  header('Location: http://example.com/', true, 405);
  exit();
}
Bár nem teljesen értem, erre miért lenne szükség. Ez persze nem fogja azt eredményezni hogy csak a jQuery férjen hozzá, ugyanis szinte minden népszerű JavaScript keretrendszer elküldi ezt a fejlécet, ráadásul nem is túlságosan bonyolult rávenni mondjuk a curl-t, hogy elküldje ugyanezen fejléceket.
$ curl http://example.com/ --header 'X-Requested-With: XMLHttpRequest'
5

Igazából csak annyira van

Tanul0 · 2010. Nov. 1. (H), 20.05
Igazából csak annyira van szükségem, hogy egy átlag ember, vagy egy kezdő ne tudja megnyitni az ajax kérésre válaszoló fájlokat.
6

Miert van ra szukseged?

Ajnasz · 2010. Nov. 2. (K), 10.26
Miert probalna barki megnyitni es milyen baj tortenne, ha megnyitna?
7

css nélkül minden nélkül

Tanul0 · 2010. Nov. 2. (K), 15.06
css nélkül minden nélkül mutatja a kimenetet, meg ha véletlenül is odatévedne valaki, igazából baj nem történik, de ne nyitogassák meg, inkább dobja át 404-re.
11

Szerintem ezzel csak magad

Ajnasz · 2010. Nov. 3. (Sze), 10.22
Szerintem ezzel csak magad szopatod. :] Igazabol nem nyujt semmit a usernek es neked sem, csak lesz meg egy hibalehetoseg a kodban.
8

Válasz

Poetro · 2010. Nov. 2. (K), 15.12
A válasz erre a kérdésre az előbb elhangzott, nincs másra szükséged, mint a fenti kis PHP snippet-re.
9

echo 'Method Not Allowed';

kuka · 2010. Nov. 2. (K), 15.37
  echo 'Method Not Allowed';  
  header('Location: http://example.com/', true, 405);  
  exit();  
A sorrend pont ez legyen? ;)
10

Nem ;)

Poetro · 2010. Nov. 2. (K), 15.54

header('Location: http://example.com/', true, 405);    
echo 'Method Not Allowed';    
exit();