이번에는 크로스 도메인 웹 개발 사용 방법을 알려드리겠습니다. 크로스 도메인 웹 개발 사용 시 주의 사항은 무엇인가요?
웹 개발 과정에서 모든 사람은 크로스 도메인과 접촉하게 됩니다. 많은 사람들은 크로스 도메인이 무엇인지, 웹 개발에서 크로스 도메인을 해결하는 방법을 모릅니다. 다음 기사에서는 이에 대한 자세한 소개를 제공합니다. 관심이 있으시면 교차 도메인 및 교차 도메인 솔루션에 대해 알아 보겠습니다.
크로스 도메인이란 무엇입니까?
개념은 다음과 같습니다. 프로토콜, 도메인 이름, 포트가 다른 한 다른 도메인으로 간주됩니다
다음은 특정 크로스 도메인 상황에 대한 자세한 설명입니다
URL | 설명 | 통신 허용 여부 |
---|---|---|
http://www.a.com/a.js, http://www.a.com/b.js | 동일한 도메인 이름으로 | 허용 |
http://www.a.com/lab/a.js, http://www.a.com/script/b.js | 동일한 도메인 이름 아래의 다른 폴더 | 허용 |
http://www.a.com:8000/a.js, http://www.a.com/b.js | 동일한 도메인 이름, 다른 포트 | 허용되지 않음 |
http://www.a.com/a.js、https://www.a.com/b.js | 동일한 도메인 이름, 다른 프로토콜 | 허용되지 않음 |
http://www.a.com/a.js、http://70.32.92.74/b.js | 도메인 이름과 도메인 이름 해당 IP | 허용되지 않음 |
http://www.a.com/a.js, http://script.a.com/b.js | 메인 도메인은 동일하지만 하위 도메인은 다릅니다 | 허용되지 않음(이 경우 쿠키에 접근할 수 없습니다) |
http://www.a.com/a.js, http://a.com/b.js | 동일한 도메인 이름, 다른 2차 도메인 이름(위와 동일) | 허용되지 않음(이 경우 쿠키에 접근할 수 없습니다) |
http://www.cnblogs.com/a.js, http://www.a.com/b.js | 다양한 도메인 이름 | 허용되지 않음 |
1. document.domain 크로스 도메인
원칙: 기본 도메인 이름은 동일하지만 하위 도메인 이름이 다른 페이지의 경우 document.domain
을 설정하여 동일한 도메인으로 만들 수 있습니다document.domain
让它们同域
限制:同域document提供的是页面间的互操作,需要载入iframe页面
下面几个域名下的页面都是可以通过document.domain跨域互操作的: http://a.com/foo, http://b.a.com/bar, http://c.a.com/bar。 但只能以页面嵌套的方式来进行页面互操作,比如常见的iframe方式就可以完成页面嵌套
// URL http://a.com/foo var ifr = document.createElement('iframe'); ifr.src = 'http://b.a.com/bar'; ifr.onload = function(){ var ifrdoc = ifr.contentDocument || ifr.contentWindow.document; ifrdoc.getElementsById("foo").innerHTML); }; ifr.style.display = 'none'; document.body.appendChild(ifr);
上述代码所在的URL是http://a.com/foo,它对http://b.a.com/bar的DOM访问要求后者将 document.domain往上设置一级
// URL http://b.a.com/bar document.domain = 'a.com'
document.domain只能从子域设置到主域,往下设置以及往其他域名设置都是不允许的, 在Chrome中给出的错误是这样的
Uncaught DOMException: Failed to set the 'domain' property on 'Document': 'baidu.com' is not a suffix of 'b.a.com'
二、有src的标签
原理:所有具有src属性的HTML标签都是可以跨域的,包括, <script></script>
限制:需要创建一个DOM对象,只能用于GET方法
在document.body
中append一个具有src属性的HTML标签, src属性值指向的URL会以GET方法被访问,该访问是可以跨域的
其实样式表的标签也是可以跨域的,只要是有src或href的HTML标签都有跨域的能力
不同的HTML标签发送HTTP请求的时机不同,例如在更改src属性时就会发送请求,而script, iframe,
link[rel=stylesheet]
只有在添加到DOM树之后才会发送HTTP请求:
var img = new Image(); img.src = 'http://some/picture'; // 发送HTTP请求 var ifr = $('<iframe>', {src: 'http://b.a.com/bar'}); $('body').append(ifr); // 发送HTTP请求</iframe>
三、JSONP
原理:<script>是可以跨域的,而且在跨域脚本中可以直接回调当前脚本的函数</script>
限制:需要创建一个DOM对象并且添加到DOM树,只能用于GET方法
JSONP利用的是<script>可以跨域的特性,跨域URL返回的脚本不仅包含数据,还包含一个回调</script>
// URL: http://b.a.com/foo var data = { foo: 'bar', bar: 'foo' }; callback(data);
然后在我们在主站http://a.com中,可以这样来跨域获取http://b.a.com的数据:
// URL: http://a.com/foo var callback = function(data){ // 处理跨域请求得到的数据 }; var script = $('<script>', {src: 'http://b.a.com/bar'}); $('body').append(script);</script>
其实jQuery已经封装了JSONP的使用,我们可以这样来
$.getJSON( "http://b.a.com/bar?callback=callback", function( data ){ // 处理跨域请求得到的数据 });
$.getJSON与$.get的区别是前者会把responseText转换为JSON,而且当URL具有callback参数时, jQuery将会把它解释为一个JSONP请求,创建一个<script>标签来完成该请求</script>
四、navigation 对象
原理:iframe之间是共享navigator对象的,用它来传递信息
要求:IE6/7
有些人注意到了IE6/7的一个漏洞:iframe之间的window.navigator
对象是共享的。 我们可以把它作为一个Messenger,通过它来传递信息。比如一个简单的委托:
// a.com navigation.onData(){ // 数据到达的处理函数 } typeof navigation.getData === 'function' || navigation.getData()
// b.com navigation.getData = function(){ $.get('/path/under/b.com') .success(function(data){ typeof navigation.onData === 'function' || navigation.onData(data) }); }
与document.navigator
类似,window.name
Access-Control-Allow-Origin: * # 允许所有域名访问,或者 Access-Control-Allow-Origin: http://a.com # 只允许所有域名访问을 완료할 수 있습니다. 위 코드가 있는 URL은 http://a.com/foo이고 http://b.a.com/bar에 대한 DOM 액세스는 후자에서 document.domain을 한 수준 더 높게 설정해야 합니다
// URL: http://a.com/foo var win = window.open('http://b.com/bar'); win.postMessage('Hello, bar!', 'http://b.com');document.domain은 하위 도메인에서만 설정할 수 있으며 하위 도메인 이름으로는 설정이 허용되지 않습니다. Chrome에서 표시되는 오류는 다음과 같습니다 포착되지 않은 DOMException: '문서'에서 '도메인' 속성을 설정하지 못했습니다. 'baidu.com'은 'b.a.com'의 접미사가 아닙니다. 2. src 태그가 있습니다 원칙: src 속성이 있는 모든 HTML 태그는
위 내용은 크로스 도메인 웹 개발을 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

PHP的Intl扩展是一个非常实用的工具,它提供了一系列国际化和本地化的功能。本文将介绍如何使用PHP的Intl扩展。一、安装Intl扩展在开始使用Intl扩展之前,需要安装该扩展。在Windows下,可以在php.ini文件中打开该扩展。在Linux下,可以通过命令行安装:Ubuntu/Debian:sudoapt-getinstallphp7.4-

CakePHP是一个开源的PHPMVC框架,它广泛用于Web应用程序的开发。CakePHP具有许多功能和工具,其中包括一个强大的数据库查询构造器,用于交互性能数据库。该查询构造器允许您使用面向对象的语法执行SQL查询,而不必编写繁琐的SQL语句。本文将介绍如何使用CakePHP中的数据库查询构造器。建立数据库连接在使用数据库查询构造器之前,您首先需要在Ca

随着网络技术的发展,PHP已经成为了Web开发的重要工具之一。而其中一款流行的PHP框架——CodeIgniter(以下简称CI)也得到了越来越多的关注和使用。今天,我们就来看看如何使用CI框架。一、安装CI框架首先,我们需要下载CI框架并安装。在CI的官网(https://codeigniter.com/)上下载最新版本的CI框架压缩包。下载完成后,解压缩

PHP是一种非常受欢迎的编程语言,它允许开发者创建各种各样的应用程序。但是,有时候在编写PHP代码时,我们需要处理和验证字符。这时候PHP的Ctype扩展就可以派上用场了。本文将就如何使用PHP的Ctype扩展展开介绍。什么是Ctype扩展?PHP的Ctype扩展是一个非常有用的工具,它提供了各种函数来验证字符串中的字符类型。这些函数包括isalnum、is

作为一种流行的前端框架,Vue能够提供开发者一个便捷高效的开发体验。其中,单文件组件是Vue的一个重要概念,使用它能够帮助开发者快速构建整洁、模块化的应用程序。在本文中,我们将介绍单文件组件是什么,以及如何在Vue中使用它们。一、单文件组件是什么?单文件组件(SingleFileComponent,简称SFC)是Vue中的一个重要概念,它

PHP是一门广泛应用于Web开发的编程语言,支持许多网络编程应用。其中,Socket编程是一种常用的实现网络通讯的方式,它能够让程序实现进程间的通讯,通过网络传输数据。本文将介绍如何在PHP中使用Socket编程功能。一、Socket编程简介Socket(套接字)是一种抽象的概念,在网络通信中代表了一个开放的端口,一个进程需要连接到该端口,才能与其它进程进行

PHP是一种广泛使用的服务器端脚本语言,而CodeIgniter4(CI4)是一个流行的PHP框架,它提供了一种快速而优秀的方法来构建Web应用程序。在这篇文章中,我们将通过引导您了解如何使用CI4框架,来使您开始使用此框架来开发出众的Web应用程序。1.下载并安装CI4首先,您需要从官方网站(https://codeigniter.com/downloa

PHP的DOM扩展是一种基于文档对象模型(DOM)的PHP库,可以对XML文档进行创建、修改和查询操作。该扩展可以使PHP语言更加方便地处理XML文件,让开发者可以快速地实现对XML文件的数据分析和处理。本文将介绍如何使用PHP的DOM扩展。安装DOM扩展首先需要确保PHP已经安装了DOM扩展,如果没有安装需要先安装。在Linux系统中,可以使用以下命令来安


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SecList
SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

ZendStudio 13.5.1 맥
강력한 PHP 통합 개발 환경
