更多: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
4.2 Access-Control-Max-Age HTTP Response Header
4.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.6 Origin HTTP Request Header
4.7 Access-Control-Request-Method HTTP Request 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代碼控制:
- php
- header("Access-Control-Allow-Origin: *");
- ?>
二、html頭控制:
- http-equiv="Access-Control-Allow-Origin"content="*">
三、nginx配置:
- location /{
- add_header Access-Control-Allow-Origin*;
- }
在網上看到有人會在nginx.conf加三句話:
- #授權從other.subdomain.com的請求
- add_header 'Access-Control-Allow-Origin''http://other.subdomain.com';
- #當該標誌為真時,響應於該請求是否可以被暴露
- add_header 'Access-Control-Allow-Credentials''true';
- #指定請求的方法,可以是GET,POST等
- add_header 'Access-Control-Allow-Methods''GET';
不過我自己測試了一下,是不需要的。另如果要指定特定的網域名稱,只要修改*即可,一般都是開放網站的次層網域。
以上就介紹了Nginx 實現AJAX跨域請求,包括了方面的內容,希望對PHP教程有興趣的朋友有所協助。