0

我正在做自動化(在預定義的時間,沒有用戶干預)請求,並且似乎xmlHttpRequest包含額外的http頭。自動瀏覽器請求:檢測,阿賈克斯與iframe

由於我想服務器不能識別這些請求是自動的(必須與普通的用戶導航完全一樣),我是否需要改爲使用iframe,或者我仍然可以使用ajax並刪除/設置這些頭文件? (目前使用jQuery)

如果我確實需要使用iframe,因爲我的'app'是一個chrome擴展名,有什麼問題我應該知道嗎?

回答

1

您可以使用setRequestHeader修改某些標題。按照spec,你不能設置以下標題:

  • 接收字符
  • 的Accept-Encoding
  • 連接
  • 內容長度
  • 餅乾
  • COOKIE2
  • 內容 - 轉印編碼
  • 日期
  • 期待
  • 主機
  • 保持活動
  • Referer的
  • TE
  • 拖車
  • 傳輸編碼
  • 升級
  • 的User-Agent
  • 通過

,或者如果報頭的開始爲的Proxy-或 仲(包括當標題僅僅是 的Proxy-或仲)一個 不區分大小寫匹配。

如果這不是你想要的,那麼你必須使用iframe,我這樣做,與FB-出口Chrome擴展。後來我將它改爲XHR,因爲它正常工作。

+0

謝謝,這可能會有用。 'Referer'可能是一個問題(iframe也是如此,但我可以解決這個問題)。 'X-Requested-With'怎麼樣 - 它可以被刪除嗎? – 2011-06-09 11:18:20

+0

任何以x開頭的標頭都是非標準的,所以可以通過將其設置爲空字符串來刪除它,我相信。 'req.setRequestHeader('X-Requested-With','')' – 2011-06-10 00:58:51

+0

(在chrome和FF上)我仍然看到頭部正在發送,只是空的:| – 2011-06-10 04:19:50