如何解決AJAX中跨域訪問出現 沒有許可權 的錯誤

2022-05-04 16:33:12 字數 2437 閱讀 2860

很多人在使用ajax呼叫別人站點內容的時候,js會提示"沒有許可權"錯誤,這是xmlhttp元件的限制-安全起見

禁止訪問非同域的**,下面乙個例子來訪問

儲存這段**到test.html,在本地直接用ie開啟沒問題,但將該段**上傳到伺服器後,問題出現了--js提示"沒有許可權"錯誤!!!這該如何解決呢?

下面思考一下:既然不能訪問非同域的,只能訪問同域的位址了,同域的動態檔案怎麼獲取非同域網頁內容呢?我們還是想到的ajax,只不過這個ajax是在伺服器端執行.

大體思路是這樣的:首先將url用ajax提交給自己站內的檔案,例如getpage.asp---在getpage.asp再次通過伺服器xmlhttp來訪問提交來的url---將獲取的內容返回給提交url的頁----顯示內容

下面開始組織**,首先是test.html檔案

再就是getpage.asp檔案(注意:要以utf-8格式儲存本檔案,防止亂碼),如下:

<%

response.charset="utf-8"

reg="///]*).+///>"

'函式名:getresstr

'作用:獲取指定url的html**

'引數:url-要獲取的url

'函式名:bytestobstr

'作用:轉換二進位制資料為字元

'引數:body-二進位制資料,cset-文字編碼方式

function bytestobstr(body,cset)

dim objstream

set objstream = createobject("adodb.stream")

objstream.type = 1

objstream.mode =3

objstream.open

objstream.write body

objstream.position = 0

objstream.type = 2

objstream.charset =cset

bytestobstr = objstream.readtext

objstream.close

set objstream = nothing

end function

'函式名:getcode

'作用:轉換二進位制為字元

'引數:str-待查詢字串,regstr-正規表示式

function getcode(str,regstr)

dim reg,serstr

set reg= new regexp

reg.ignorecase = true

reg.multiline = true

reg.pattern =regstr

if reg.test(str) then '若查詢到匹配項

set cols = reg.execute(str)

serstr=cols(0).submatches(0) '使用匹配到的第乙個匹配項

else '否則給個預設值gb2312,有點省懶法,如果頁面沒給出編碼格式,想知道確實有點麻煩

serstr="gb2312"

end if

getcode=serstr

end function

dim url:url=request.querystring("url")

response.write getresstr(url)

%>

**組織完畢,實驗下,成功提取的內容!!!!!這樣就可以解決"沒有許可權"的問題了。

其實,單純乙個getpage.asp一樣能獲取,不過不能像js那樣動態的處理dom。

還有乙個問題,如果你用第一種方法訪問會出現亂碼,因為baidu編碼為gb2312,

而xmlhttp返回的是utf-8編碼格式。用第二種方法就不會出現這樣的問題了,只要定義了編碼格式的站點就能正常返回資訊(這裡不能包括一些使用特別編碼的站點)。

如何解決AJAX中跨域訪問出現 沒有許可權 的錯誤

很多人在使用ajax呼叫別人站點內容的時候,js會提示 沒有許可權 錯誤,這是xmlhttp元件的限制 安全起見 禁止訪問非同域的 下面乙個例子來訪問http www.google.cn,儲存這段 到test.html,在本地直接用ie開啟沒問題,但將該段 上傳到伺服器後,問題出現了 js提示 沒有...

如何解決AJAX中跨域訪問出現 沒有許可權 的錯誤

很多人在使用ajax呼叫別人站點內容的時候,js會提示 沒有許可權 錯誤,這是xmlhttp元件的限制 安全起見 禁止訪問非同域的 下面乙個例子來訪問 儲存這段 到test.html,在本地直接用ie開啟沒問題,但將該段 上傳到伺服器後,問題出現了 js提示 沒有許可權 錯誤 這該如何解決呢?大體思...

mysql 跨域訪問 php如何解決跨域問題

什麼是跨域?跨域,指的是瀏覽器不能執行其他 的指令碼。它是由瀏覽器的同源策略造成的,是瀏覽器施加的安全限制。所謂同源是指,網域名稱,協議,埠均相同。1 允許所有網域名稱訪問header access control allow origin 2 允許單個網域名稱訪問header access con...