使用js獲取資料時,涉及到的兩個url只要協議、網域名稱、埠有任何乙個不同,都被當作是不同的域,相互訪問就會有跨域問題。
例如客戶端的網域名稱是www.redis.com.cn,而請求的網域名稱是www.264.cn
如果直接使用ajax訪問,會有以下錯誤
在伺服器頁面的response header中加入如下內容,可以實現post跨域。
// 指定允許其他網域名稱訪問
header('access-control-allow-origin:*');
// 響應型別
header('access-control-allow-methods:post');
// 響應頭設定
header('access-control-allow-headers:x-requested-with,content-type');
access-control-allow-origin:* 表示允許任何網域名稱跨域訪問
如果需要指定某網域名稱才允許跨域訪問,只需把access-control-allow-origin:*改為access-control-allow-origin:允許的網域名稱
例如:header('access-control-allow-origin:');
1.nginx配置檔案增加響應頭
在伺服器端的nginx.conf中配置增加配置12
這樣就可以實現get,post,options的跨域請求的支援
2.修改php**加入響應頭
例如,server.php 路徑:
3456
78910
1112
13<?php
$ret=array(
'name'=>isset($_post['name'])?$_post['name']:'',
'gender'=>isset($_post['gender'])?$_post['gender']:''
);header('access-control-allow-origin:*');
header('access-control-allow-methods:post');
header('access-control-allow-headers:x-requested-with,content-type');
echojson_encode($ret);
?>
3.修改客端的nginx配置,利用反向**來實現
例如,www.redis.com.cn/html/request.html 想請求www.264.cn/api/msg?method=1¶=2;12
3456
7varurl='www.264.cn/api/msg?method=1¶=2';
$.ajax(,
....
})變成訪問本地網域名稱位址12
3456
78varurl='';
varproxyurl='msg?method=1¶=2';
$.ajax(,
....
})通過nginx中增加location反向**到伺服器端12
34location^~/proxy/html/
nginx解決跨域問題!
1 問題背景 前端呼叫線上後段時出現跨域問題!解決方法nginx的location頭部增加配置 add header access control allow headers add header access control allow methods get,post,options,head,...
nginx 解決跨域問題
跨域問題的存在 如果用ajax請求的資源網域名稱和原網頁的網域名稱不一致就會產生跨域請求問題,為了解決這一問題,可以在http響應裡面設定響應頭為允許跨域,但一般不會這麼做。使用nginx來解決跨域問題的手段是 因為nginx可以進行反向 因此可以進行網域名稱對映,讓不同服務的網域名稱對映為有相同的...
nginx解決跨域問題
問題描述是為了解釋下面的 yue 這個和解決方法沒什麼關係,可以忽略此部分直接看到解決辦法。我在寫乙個登陸系統的前端的時候,登陸成功,需要從登陸頁面轉到使用者profile頁面,出現了跨域問題。具體如下 在登陸頁面用ajax向 http localhost 8082 yue login 傳送post...