首頁 >後端開發 >php教程 >Nginx 實作AJAX跨域請求

Nginx 實作AJAX跨域請求

WBOY
WBOY原創
2016-08-08 09:30:271480瀏覽

更多:http://www.webyang.net/Html/web/article_135.html

最新的W3C標準裡是這麼實現HTTP跨域請求的,

Cross-Origin Resource Sharing
簡單來說,就是跨網域的目標伺服器要傳回一系列的Headers,透過這些Headers來控制是否同意跨網域。
這些Headers有:
    4 Syntax
        4.1 Access-Control-Allow-Origin HTTP Response Header
   3 Access-Control-Allow-Credentials HTTP Response Header
        4.4 Access-Control- Allow-Methods HTTP Response Header
        4.5 Access-Control-Allow-Headers HTTP Response Header
               4.8 Access-Control-Request-Headers HTTP Request Header
在Request 套件和Response 套件中都有一些。
其中最敏感的就是 Access-Control-Allow-Origin 這個 Header, 他是W3C標準裡用來檢查該跨域請求是否可以被通過。 (Access Control Check)
所以如果需要跨域,解決方法就是在資源的頭中加入Access-Control-Allow-Origin 指定你授權的域. 我這裡無所謂,就指定星號* , 任何域都可以訪問我的資源。

具體操作方法, 可以透過不同入口來控制:
一、php程式碼控制:
<ol><li value="1"><span><?</span><span>php</span></li><li><span>header</span><span>(</span><span>"Access-Control-Allow-Origin: *"</span><span>);</span></li><li><span>?></span></li></ol>
二、html頭控制:
<ol><li value="1"><span><meta</span><span></span><span>http-equiv</span><span>=</span><span>"Access-Control-Allow-Origin"</span><span></span><span>content</span><span>=</span><span>"*"</span><span>></span></li></ol>
三、nginx配置:
<ol>
<li value="1">
<span>location </span><span>/</span><span></span><span>{</span>
</li>
<li>
<span>  add_header </span><span>Access</span><span>-</span><span>Control</span><span>-</span><span>Allow</span><span>-</span><span>Origin</span><span></span><span>*;</span>
</li>
<li><span>}</span></li>
</ol>
在網路上看到有人會在nginx.conf加三句話:
<ol>
<li value="1"><span>#授权从other.subdomain.com的请求</span></li>
<li>
<span>add_header </span><span>'Access-Control-Allow-Origin'</span><span></span><span>'http://other.subdomain.com'</span><span>;</span>
</li>
<li><span>#当该标志为真时,响应于该请求是否可以被暴露</span></li>
<li>
<span>add_header </span><span>'Access-Control-Allow-Credentials'</span><span></span><span>'true'</span><span>;</span>
</li>
<li><span>#指定请求的方法,可以是GET,POST等</span></li>
<li>
<span>add_header </span><span>'Access-Control-Allow-Methods'</span><span></span><span>'GET'</span><span>;</span>
</li>
</ol>

不過我自己測試了一下,是不需要的。另如果要指定特定的域名,只要修改*即可,一般都是開放站點的二級域名。

以上就介紹了Nginx 實作AJAX跨域請求,包含了面向的內容,希望對PHP教學有興趣的朋友有幫助。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn