Ajax跨域請求

2022-08-09 06:09:12 字數 2193 閱讀 9297

一,前台解決

利用jsonp,不過只能發生get請求

二,後台解決

設定響應頭

response.setheader(".......", ".......」);

1.access-control-allow-origin

返回的資源需要有乙個access-control-allow-origin頭資訊,語法如下:

access-control-allow-origin:| *

origin引數指定乙個允許向該伺服器提交請求的url。對於乙個不帶有credentials的請求,可以指定為『*』,表示允許來自所有域的請求。

舉個例子,允許來自的請求,你可以這樣指定:

access-control-allow-origin:

如果伺服器端指定了網域名稱,而不是『*』,那麼響應頭的vary值裡必須包含origin。它告訴客戶端:響應是根據請求頭里的origin的值來返回不同的內容的。

2.access-control-expose-headers

設定瀏覽器允許訪問的伺服器的頭資訊的白名單:

access-control-expose-headers: x-my-custom-header, x-another-custom-header

這樣,x-my-custom-header和x-another-custom-header這兩個頭資訊,都可以被瀏覽器得到。

3.access-control-max-age

這個頭告訴我們這次預請求的結果的有效期是多久,如下:

access-control-max-age:

delta-seconds引數表示,允許這個預請求的引數快取的描述,在此期間,不用發出另一條預檢請求。

4.access-control-allow-credentials

告知客戶端,當請求的credentials屬性是true的時候,響應是否可以被得到。當它作為預請求的響應的一部分時,它用來告知實際的請求是否使用了credentials。注意簡單的get請求不會預檢,所以如果乙個請求是為了得到乙個帶有credentials的資源,而響應裡又沒有access-control-allow-credentials頭資訊,那麼說明這個響應被忽略了。

access-control-allow-credentials:true | false

5.access-control-allow-methods

指明資源可以被請求的方式有哪些(乙個或多個)。這個響應頭資訊在客戶端發出預檢請求的時候會被返回。

access-control-allow-methods: [, ]*(post, put, get, options, delete)

發出預檢請求的例子見上,這個例子裡就有向客戶端傳送access-control-allow-methods響應頭資訊。

6.access-control-allow-headers

也是在響應預檢請求的時候使用。用來指明在實際的請求中,可以使用哪些自定義http請求頭。比如

access-control-allow-headers:x-pingother  (origin, x-requested-with, content-type, accept, client_id, uuid, authorization)

可以有多個自定義http請求頭,用逗號分隔:

access-control-allow-headers:[, ]*

Ajax跨域請求

一 什麼是跨域請求 網域名稱它由http 協議 www 子網域名稱 baidu 主網域名稱 以及8080 埠號 組成,當另乙個網域名稱與其中任意一項對應不等的話,那麼我們說兩個網域名稱就是跨域的。如的頁面上我們要請求資料到上去,那麼就說這種請求是跨域請求。二 為什麼要講跨域請求 因為在一般的請求條件...

Ajax 跨域請求

隨筆 71 文章 0 客戶端js 服務端 1 string callbackfunname context.request callbackparam 2 context.response.write callbackfunname ps 客戶端的jsonp引數是用來通過url傳參,傳遞jsonpc...

ajax跨域請求

通過xhr實現ajax通訊的乙個主要的限制,於跨域安全策略。在預設情況下,xhr物件只能訪問與包含它的頁面位於同乙個域中的資源。這樣可以防止一些惡意行為。所謂的域,可以理解成網域名稱,如果這個xhr所在的頁面與請求的介面是在同乙個應用下面,那麼就不存在跨域的問題,它們是在同乙個域下面,例如這裡都在本...