透過設定Http Header方式允許跨網域請求
<?php header("Access-Control-Allow-Origin: http://www.requesting-page.com"); ?>
更多詳情
瀏覽器(客戶端)端程式碼範例:
https://developer.mozilla.org/en-US/docs/Web/HTTP/ Access_control_CORS
伺服器端程式碼範例:
https://developer.mozilla.org/en-US/docs/Web/HTTP/Server-Side_Access_Control
修復交叉域腳本問題?
簡單的解決方案是允許發出請求的伺服器將請求傳送到任何網域或網域清單。要記住的重要一點是,更改將在提供網路服務的伺服器中進行。
有多種方法可以做到這一點
1. 您更改apache 的httpd-vhosts.conf 檔案中的設定(我使用的是Apache 2.2)
<VirtualHost *:80> ServerAdmin webmaster@dummy-host.com DocumentRoot “C:/apache-tomcat-6.0.29/webapps/myApplication” ServerName skill-guru.com ErrorLog “logs/skg1-error.log” CustomLog “logs/skg1-access.log” common Header set Access-Control-Allow-Origin “*” <Directory “C:/apache-tomcat-6.0.29/webapps/myApplication”> Options -Indexes FollowSymLinks AllowOverride AuthConfig FileInfo Order allow,deny Allow from all </Directory> JkUnmount /*.jsp ajp13 </VirtualHost>
現在,在apache 伺服器中設定值並查看標頭後,會看到
HTTP/1.1 200 OK
日期:星期一, 2008 年12 月1 日00:23:53 GMT
服務器:Apache/2.0.61
訪問控制允許來源:*
保持活動:超時=2,最大=100
連接:保持活動
傳輸編碼: chunked
Content-Type: application/xml
怎樣配置Tomcat伺服器允許跨網域請求
如果您不打算使用Apache並且出於某種方式原因使用tomcat或任何其他支援過濾器的類似Web容器,這裡是一個現成的解決方案,Cors Filter
這為您提供了一個與任何Java Servlet 2.5+ Web 容器相容的servlet 過濾器。
安裝非常簡單。將 jar 加入到您的庫中
在您的 web.xml 中
添加此行
<filter> <filter-name>CORS</filter-name> <filter-class>com.thetransactioncompany.cors.CORSFilter</filter-class> </filter> <filter-mapping> <filter-name>CORS</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>