Apache與Nginx設定跨域請求

2022-08-22 22:15:14 字數 2362 閱讀 8864

我們在前端使用**請求時,要先設定伺服器允許跨域請求,下面先來介紹幾個常用的配置

(1)access-control-allow-origin

該字段是必須的。它的值要麼是請求時origin欄位的值,要麼是乙個*,表示接受任意網域名稱的請求。

(2)access-control-allow-credentials

該欄位可選。它的值是乙個布林值,表示是否允許傳送cookie。預設情況下,cookie不包括在cors請求之中。設為true,即表示伺服器明確許可,cookie可以包含在請求中,一起發給伺服器。這個值也只能設為true,如果伺服器不要瀏覽器傳送cookie,刪除該欄位即可。

(3)access-control-expose-headers

該欄位可選。cors請求時,xmlhttprequest物件的getresponseheader()方法只能拿到6個基本字段:cache-control、content-language、content-type、expires、last-modified、pragma。如果想拿到其他字段,就必須在access-control-expose-headers裡面指定。上面的例子指定,getresponseheader('foobar')可以返回foobar欄位的值。

(4)access-control-request-method

該字段是必須的,用來列出瀏覽器的cors請求會用到哪些http方法。

(5)access-control-request-headers

該字段是乙個逗號分隔的字串,指定瀏覽器cors請求會額外傳送的頭資訊字段,上例是x-custom-header。

(6)access-control-allow-methods

該欄位必需,它的值是逗號分隔的乙個字串,表明伺服器支援的所有跨域請求的方法。注意,返回的是所有支援的方法,而不單是瀏覽器請求的那個方法。這是為了避免多次"預檢"請求。

(7)access-control-allow-headers

如果瀏覽器請求包括access-control-request-headers欄位,則access-control-allow-headers欄位是必需的。它也是乙個逗號分隔的字串,表明伺服器支援的所有頭資訊字段,不限於瀏覽器在"預檢"中請求的字段。

(8)access-control-max-age(此方法可解決跨域請求時每次請求傳送兩次的問題)

該欄位可選,用來指定本次預檢請求的有效期,單位為秒。上面結果中,有效期是20天(1728000秒),即允許快取該條回應1728000秒(即20天),在此期間,不用發出另一條預檢請求。

一、apache

1、修改httpd.conf,windows中對應的目錄是:c:\wamp\bin\apache\apache2.4.4\conf\httpd.conf

2、把loadmodule headers_module modules/mod_headers.so 前面的注釋刪除

3、vhost下做如此修改

documentroot "c:\users\administrator\desktop\php_1222"servername www.1.com

serveralias 1.com

options followsymlinks execcgi

allowoverride all

order allow,deny

allow from all

require

all granted

header set access-control-allow-origin *

header set access-control-allow-methods *

header set access-control-allow-headers "origin, x-requested-with, content-type, accept, authorization"

ajax從乙個域請求另乙個域會有跨域的問題。那麼如何在nginx上實現ajax跨域請求呢?要在nginx上啟用跨域請求,需要新增add_header access-control*指令。如下所示:

location /

注釋如下:

如果需要允許來自任何域的訪問,可以這樣配置:

access-control-allow-origin: *

重啟nginx

service nginx reload

請求測試

成功時,響應頭是如下所示

apache 設定允許跨域

1.首先找到 httpd.conf 檔案 找到 loadmodule headers module modules mod headers.so 把 注釋符去掉 也有可能已經預設去掉了 目的是開啟apache頭資訊自定義模組 2.找到你的虛擬主機檔案 注意是被跨域的 的 具體內容是這樣的檔案 也有可...

apache伺服器跨域設定

在需要允許跨域訪問的伺服器的配置檔案 httpd.conf新增如下內容 loadmodule headers module modules mod headers.so allowoverride none require all granted header set access control ...

讓Apache 和nginx支援跨域訪問

1,如何讓apache支援跨域訪問呢?步驟 修改httpd.conf,windows中對應的目錄是 c wamp bin apache apache2.4.4 conf httpd.conf 把loadmodule headers module modules mod headers.so 前面的注...