我設置了一些頁面,以便它們僅響應ajax請求。問題是我該如何設置它,以便有人試圖通過瀏覽器窗口發送請求,即通過輸入它們 - 它們不會運行,並且只有在發出ajax調用時才運行。頁面在這裏的PHP檢查您的頁面是不是通過ajax請求?
回答
沒有可靠的方法來區分AJAX請求和正常的請求。某些庫(如jQuery)會爲請求附加額外的X-Requested-With: XMLHttpRequest
HTTP標頭,但其他庫可能不會。您可以使用瀏覽器提供的低級對象僞造AJAX請求,該對象與普通請求看起來完全相同,因此不要太多。
從來沒有想過 - 現在我只是把檢查額外的標題。 – Ali 2010-07-12 05:06:23
@DarinDimitrov,我可以請你看看http://stackoverflow.com/questions/11548965/file-get-contents-or-curl-way-nothing-works-in-internet-server-though-thos關於PHP的get_file_contents()和curl()問題? – 2012-07-18 21:25:23
define('XHR', (isset($_SERVER['HTTP_X_REQUESTED_WITH'])) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest'));
如果您使用JS設置http標頭(自動在jQuery中完成),請使用此常量。
您可以檢查的所有信息(標題,引薦等等)來自瀏覽器,並且可以僞造。
如果用戶被正確驗證(例如:通過cookie +數據令牌),那麼您不會通過瀏覽器窗口暴露的系統比正常的ajax使用更多。
AJAX在瀏覽器窗口內完成。我想你的意思是通過在瀏覽器中輸入URL來阻止人們訪問它。你可以簡單地使用POST。有人必須編寫HTML來訪問您的頁面。
您還可以在JSON發送請求,添加自定義頁眉等
如果在調用用手AJAX URL(或工具),可以做一些服務器上的危險沒有solution.If其安全性您需要確保處理ajax調用的代碼的原因。只允許那些不會造成任何傷害的。
同意,沒有辦法阻止它,所以相反,修復您的系統,以便有人這樣做不是問題。 – JAL 2010-07-11 16:48:39
有這個
- 1. HTTP請求是通過AJAX
- 2. 通過HTTPS的HTTP Ajax請求頁面
- 3. 檢查是否Ajax請求是空
- 4. jquery:如何檢查頁面是否正在執行ajax請求?
- 5. 如何通過重定向檢測頁面是否被請求?
- 6. Dart如何檢查請求是否是ajax請求
- 7. ajax responseText總是返回頁面本身,但不是請求的頁面
- 8. Ajax請求總是通過別人
- 9. 檢查請求是否由Ajax發送或不是
- 10. 笨:您請求的頁面不存在
- 11. Ajax請求不會通過
- 12. 檢查Ajax請求
- 13. 請求通過Ajax
- 14. 如何檢查哪個ajax通話請求是
- 15. 檢查當前請求是否來自httpmodule中的mvc頁面
- 16. 404找不到頁面找不到您請求的頁面 - CodeIgniter
- 17. 來自ajax請求的鏈接不通過ajax請求
- 18. 我如何檢查請求是通過https快速發送的
- 19. MVC C#檢查用戶是否通過ajax請求進行身份驗證
- 20. 檢查HTTP請求是否返回404或頁面未找到
- 21. 如何檢查是否以編程方式請求頁面?
- 22. 如何檢查是否正在從代理請求頁面?
- 23. Ajax請求不是異步
- 24. 通過Rails中的ajax請求更新頁面
- 25. jQuery的 - 通過Ajax請求
- 26. 通過Ajax請求的JSON
- 27. 確定請求是否通過Facebook頁面選項卡
- 28. 如何檢查是否AJAX請求是由瀏覽器
- 29. 是否可以通過GET請求從PDF文檔檢索單個頁面?
- 30. jQuery ajax頁面請求
沒有這樣的穩定方式除了找頭,您可以發送正確的內容類型爲'應用程序/ json'這將促使在Firefox中至少下載。它*可能*作爲5秒的威懾力:P – alex 2010-07-11 14:13:19
正如其他人所提到的,請記住,這些東西可以僞造。 – 2010-07-11 14:21:24