2011-10-31 29 views
0

我目前的工作對HTML/CSS/JavaScript的一個動態的網站沒有服務器端腳本)jQuery的:如何檢測通過一個Ajax請求

有些內容是動態加載Ajax請求,從如果一個頁面被稱爲遠程html文件。

我希望這些html文件只能通過ajax請求來訪問,並且如果它不是ajax調用,則需要重定向。原因是如果你直接訪問它們,那麼css和網站的其他部分(菜單等)不會被加載。

所以我的問題是,有沒有辦法只用Javascript檢測請求的類型? 或者也許有不同的方法來解決這個問題......?

我正在使用jQuery來完成ajax調用,我知道jquery爲請求添加了「X-Requested-With」標頭。這是很容易處理與PHP或Java例如,但我找不到如何使用jQuery/Javascript ...

+0

您的意思是一個沒有服務器端腳本的_dynamic_網站。 – nnnnnn

回答

3

把所有的內容命名爲«內容»文件夾中

然後創建一個的.htaccess並將其放置到「內容」的文件夾,或在Apache的配置(更好):

RewriteEngine on 
RewriteCond $1 ^content 
RewriteCond %{HTTP:x-requested-with} !^XMLHttpRequest$ 
RewriteRule (.*) http://whereyouwanttoredirect.foo [R=301,L] 

它應該做或多或少的工作。我不是一個專家,所以也許.htaccess應該有點曲調(這裏有一些apache殺手想要這麼做嗎?)

+0

這將做!至少不需要真正的服務器端腳本... 感謝您的所有時間和幫助! – Piero

+0

好的答案,比檢查像我這樣的非獲取請求更好。 – Hogan

1

我想說的一種方法是使用cookie。仍然餅乾不是真正用於這個目的,你會遇到一些問題。如果您對服務器有一定的控制權限,則只能製作一些頁面post。這些會做阿賈克斯的東西。當頁面被get「獲取」時,他們知道它們是針對瀏覽器的。

請記住沒有安全的方法來做到這一點沒有服務器端控制。我猜你不在乎。

1

一些框架設置X-Requested-With,但沒有真正的方法知道是什麼在打電話,任何人都可能僞造這些頭文件。

1

想一想,你不能添加任何動態內容(重定向)到靜態網站;另外,如果你設法在JS上這樣做,如果它被禁用等等會發生什麼?

你不應該擔心用戶輸入錯誤的頁面,因爲這是不會發生的(用戶不應該試圖讓自己的URL)

。如果你想做到這一點,使PHP或其他一些解析器檢查頁面是否無法直接訪問,如果不是,則向用戶提供HTML文件內容。

+0

是的,你是對的。只是,在之前的項目中,我看到google會在搜索結果中返回這些類型網頁的網址。所以用戶不會做他們的urls,但他們也被重定向他們...一方面我想谷歌引用這個內容,但我不希望直接鏈接出現在搜索結果中... – Piero