因為瀏覽器使用了同源策略,所以產生跨域請求。一個網頁向另一個不同網域名稱/不同協定/不同連接埠的網頁請求資源,這就是跨網域。本篇文章提供了5種方式來解決網站跨域,有興趣的朋友可以看看。
因為瀏覽器使用了同源策略
是為了保證使用者的資訊安全,防止惡意網站竊取數據,如果網頁之間不滿足同源要求,將不能:
<script></script> <img/> <iframe/> <link/> <video/> <audio/>
所謂的同源指:網域名稱、網路協定、連接埠號碼相同,三條有一條不同就會產生跨域。例如:你用瀏覽器開啟http://baidu.com
,瀏覽器執行JavaScript腳本時發現腳本向http://cloud.baidu.com
網域發請求,這時瀏覽器就會報錯,這就是跨域報錯。 $.ajax({ url: 'http://192.168.1.114/yii/demos/test.php', //不同的域 type: 'GET', // jsonp模式只有GET 是合法的 data: { 'action': 'aaron' }, dataType: 'jsonp', // 数据类型 jsonp: 'backfunc', // 指定回调函数名,与服务器端接收的一致,并回传回来 })
3f1c4e4b6b16bbbd69b2ee476dc4f83a
標籤來呼叫伺服器提供的 js腳本。jquery 會在window物件中載入一個全域的函數,當try { HttpClient client = HttpClients.createDefault(); //client对象 HttpGet get = new HttpGet("http://localhost:8080/test"); //创建get请求 CloseableHttpResponse response = httpClient.execute(get); //执行get请求 String mes = EntityUtils.toString(response.getEntity()); //将返回体的信息转换为字符串 System.out.println(mes); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }###3、後台配置同源Cors (推薦)#########在SpringBoot2.0 上的跨域用以下程式碼配置即可完美解決你的前後端跨域請求問題### ######在SpringBoot2.0 上的跨域用以下程式碼配置即可完美解決你的前後端跨域請求問題###
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.UrlBasedCorsConfigurationSource; import org.springframework.web.filter.CorsFilter; /** * 实现基本的跨域请求 * @author linhongcun * */ @Configuration public class CorsConfig { @Bean public CorsFilter corsFilter() { final UrlBasedCorsConfigurationSource urlBasedCorsConfigurationSource = new UrlBasedCorsConfigurationSource(); final CorsConfiguration corsConfiguration = new CorsConfiguration(); /*是否允许请求带有验证信息*/ corsConfiguration.setAllowCredentials(true); /*允许访问的客户端域名*/ corsConfiguration.addAllowedOrigin("*"); /*允许服务端访问的客户端请求头*/ corsConfiguration.addAllowedHeader("*"); /*允许访问的方法名,GET POST等*/ corsConfiguration.addAllowedMethod("*"); urlBasedCorsConfigurationSource.registerCorsConfiguration("/**", corsConfiguration); return new CorsFilter(urlBasedCorsConfigurationSource); } }###4、使用SpringCloud網關######### ####服務網關(zuul)又稱路由中心,用來統一存取所有api接口,維護服務。 ############Spring Cloud Zuul透過與Spring Cloud Eureka的整合,實現了對服務實例的自動化維護,所以在使用服務路由配置的時候,我們不需要向傳統路由配置方式那樣去指定具體的服務實例位址,只需要透過Ant模式設定檔參數即可###
http://a.a.com:81/A
中想访问 http://b.b.com:81/B
那么进行如下配置即可www.my.com/A
里面即可访问 www.my.com/B
server { listen 80; server_name www.my.com; location /A { proxy_pass http://a.a.com:81/A; index index.html index.htm; } location /B { proxy_pass http://b.b.com:81/B; index index.html index.htm; } }
http://b.b.com:80/Api
中想访问 http://b.b.com:81/Api
那么进行如下配置即可server { listen 80; server_name b.b.com; location /Api { proxy_pass http://b.b.com:81/Api; index index.html index.htm; } }
希望本篇文章对你有所帮助。
以上是網站跨域的五種解決方式的詳細內容。更多資訊請關注PHP中文網其他相關文章!