js 교차 도메인 요청_javascript 기술에 대한 5가지 솔루션
교차 도메인 요청 데이터에 대한 솔루션에는 주로 다음 솔루션이 포함됩니다.
JSONP方式 表单POST方式 服务器代理 Html5的XDomainRequest Flash request
별도 지침:
1. JSONP:
직관적 이해:
클라이언트에 동적으로 함수를 등록하는 것입니다
function a(data)를 호출하고 함수 이름을 서버에 전달하면 서버는 실행할 클라이언트에 a({/*json*/})를 반환하여 클라이언트의
를 호출합니다.a(데이터) 기능을 통해 교차 도메인을 달성합니다.
출생 배경:
1. Ajax는 크로스 도메인 접근 문제가 있는 일반 파일을 정적 페이지, 동적 웹 페이지, 웹 서비스, wcf 등 상관없이 크로스 도메인으로 직접 요청합니다. 도메인 요청이 작동하지 않습니다.
2. 단, 웹페이지에서 js 파일을 호출할 때에는 이에 영향을 받지 않습니다
3. 추가 홍보를 통해 Src 속성이 있는 모든 태그에는 다음과 같은 도메인 간 기능이 있음을 확인했습니다.
4. 따라서 현재 순수 웹측을 통해 도메인 간 데이터에 액세스하려는 경우(ActiveX 컨트롤, 서버측 프록시, 향후 HTML5에 속하는 웹소켓 등은 포함되지 않음) 다음 방법: 원격 서버에서 클라이언트 호출 및 추가 처리를 위해 js 형식의 텍스트로 데이터를 로드해 보십시오.
5. JSON은 순수 문자 데이터 형식이며 js에서 기본적으로 지원할 수 있습니다.
6. 해결 방법은 다음과 같습니다. 웹 클라이언트는 스크립트를 호출하는 것과 똑같은 방식으로 크로스 도메인 서버에서 동적으로 생성된 js 형식 파일(일반적으로 접미사가 json임)을 호출합니다.
7. 클라이언트가 json 파일을 성공적으로 호출한 후 필요한 데이터를 가져오고 나머지는 자체 필요에 따라 처리하는 것입니다.
8 클라이언트의 데이터 사용을 용이하게 하기 위해 jsonp라는 비공식 전송 프로토콜이 점차 형성되었습니다. 이 프로토콜의 핵심은 사용자가 콜백 매개변수를 서버에 전달할 수 있도록 허용한 다음, 서버가 데이터를 반환할 때 이 콜백 매개변수를 함수 이름으로 사용하여 json 데이터를 래핑함으로써 클라이언트가 이를 사용자 정의할 수 있도록 한다는 것입니다. 반환된 데이터를 처리하는 자체 함수입니다.
상세 구현:
JQuery, extjs 또는 jsonp를 지원하는 다른 프레임워크이든 뒤에서 수행하는 작업은 동일합니다. 클라이언트에서 jsonp 구현을 단계별로 설명하겠습니다.
1. 크로스 도메인 js 파일의 코드(물론 웹 스크립트 보안 정책을 준수함)라도 웹 페이지는 무조건 실행될 수 있다는 것을 알고 있습니다.
원격 서버인 Remoteserver.com의 루트 디렉터리에 다음과 같은 Remote.js 파일 코드가 있습니다.
alert('나는 원격 파일입니다');
로컬 서버 localserver.com에는 다음과 같은 jsonp.html 페이지 코드가 있습니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript" src="http://remoteserver.com/remote.js"></script> </head> <body> </body> </html>
페이지에 도메인 간 호출이 성공했음을 알리는 프롬프트 창이 나타날 것이라는 데는 의심의 여지가 없습니다.
2. 이제 jsonp.html 페이지에 함수를 정의한 다음, remote.js에 데이터를 전달하여 호출합니다.
jsonp.html 페이지 코드는 다음과 같습니다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> var localHandler = function(data){ alert('我是本地函数,可以被跨域的remote.js文件调用,远程js带来的数据是:' + data.result); }; </script> <script type="text/javascript" src="http://remoteserver.com/remote.js"></script> </head> <body> </body> </html>
remote.js 파일 코드는 다음과 같습니다.
localHandler({"result":"나는 원격 js에서 가져온 데이터입니다"});
실행 후 결과를 확인합니다. 페이지에 프롬프트 창이 성공적으로 팝업되어 크로스 도메인 원격 js가 로컬 함수를 성공적으로 호출했으며 원격 js가 가져온 데이터도 수신했음을 보여줍니다. 도메인 간 원격 데이터 수집의 목적이 기본적으로 달성되어 매우 기쁩니다. 그러나 원격 js가 호출해야 하는 로컬 함수의 이름을 어떻게 알릴 수 있습니까? 결국 jsonp 서버는 많은 서비스 개체를 직면해야 하며 이러한 서비스 개체의 로컬 기능은 다릅니다. 아래를 살펴보자.
3. 똑똑한 개발자라면 서버에서 제공하는 js 스크립트가 동적으로 생성되기만 하면 호출자가 서버에 "XXX 함수를 호출하는 js 코드를 원합니다. 반환해 주세요"라고 알리는 매개변수를 전달할 수 있다고 쉽게 생각할 수 있습니다. to me"를 사용하면 서버가 js 스크립트를 생성하고 클라이언트의 요구에 따라 응답할 수 있습니다.
jsonp.html 페이지의 코드를 살펴보세요:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title></title> <script type="text/javascript"> // 得到航班信息查询结果后的回调函数 var flightHandler = function(data){ alert('你查询的航班结果是:票价 ' + data.price + ' 元,' + '余票 ' + data.tickets + ' 张。'); }; // 提供jsonp服务的url地址(不管是什么类型的地址,最终生成的返回值都是一段javascript代码) var url = "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998&callback=flightHandler"; // 创建script标签,设置其属性 var script = document.createElement('script'); script.setAttribute('src', url); // 把script标签加入head,此时调用开始 document.getElementsByTagName('head')[0].appendChild(script); </script> </head> <body> </body> </html>
이번에는 코드가 많이 변경되었습니다. 더 이상 원격 js 파일을 직접 작성하지 않고 동적 쿼리를 구현하는 코드입니다. 이는 jsonp 클라이언트 구현의 핵심 부분이기도 합니다. jsonp 호출의 전체 과정.
코드 매개변수가 호출 URL에 전달되어 내가 확인하려는 것이 CA1998 항공편의 정보임을 서버에 알리고, 콜백 매개변수는 내 로컬 콜백 함수가 flightHandler라고 서버에 알리는 것을 볼 수 있습니다. 쿼리 결과를 전달합니다. 이 함수를 호출하세요.
flightHandler({ "code": "CA1998", "price": 1780, "tickets": 5 });
我们看到,传递给flightHandler函数的是一个json,它描述了航班的基本信息。运行一下页面,成功弹出提示窗口,jsonp的执行全过程顺利完成!
4、到这里为止的话,相信你已经能够理解jsonp的客户端实现原理了吧?剩下的就是如何把代码封装一下,以便于与用户界面交互,从而实现多次和重复调用。
什么?你用的是jQuery,想知道jQuery如何实现jsonp调用?好吧,那我就好人做到底,再给你一段jQuery使用jsonp的代码(我们依然沿用上面那个航班信息查询的例子,假定返回jsonp结果不变):
OK,服务器很聪明,这个叫做flightResult.aspx的页面生成了一段这样的代码提供给jsonp.html(服务端的实现这里就不演示了,与你选用的语言无关,说到底就是拼接字符串):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" > <head> <title>Untitled Page</title> <script type="text/javascript" src=jquery.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function(){ $.ajax({ type: "get", async: false, url: "http://flightQuery.com/jsonp/flightResult.aspx?code=CA1998", dataType: "jsonp", jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) jsonpCallback:"flightHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据 success: function(json){ alert('您查询到航班信息:票价: ' + json.price + ' 元,余票: ' + json.tickets + ' 张。'); }, error: function(){ alert('fail'); } }); }); </script> </head> <body> </body> </html>
是不是有点奇怪?为什么我这次没有写flightHandler这个函数呢?而且竟然也运行成功了!哈哈,这就是jQuery的功劳了,jquery在处理jsonp类型的ajax时(还是忍不住吐槽,虽然jquery也把jsonp归入了ajax,但其实它们真的不是一回事儿),自动帮你生成回调函数并把数据取出来供success属性方法来调用,是不是很爽呀?
以上所述就是本文的全部内容了,希望大家能够喜欢。

핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

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

뜨거운 주제











JS 및 Baidu Map을 사용하여 지도 팬 기능을 구현하는 방법 Baidu Map은 지리 정보, 위치 지정 및 기타 기능을 표시하기 위해 웹 개발에 자주 사용되는 널리 사용되는 지도 서비스 플랫폼입니다. 이 글에서는 JS와 Baidu Map API를 사용하여 지도 이동 기능을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. 준비 바이두 맵 API를 사용하기 전에 먼저 바이두 맵 오픈 플랫폼(http://lbsyun.baidu.com/)에서 개발자 계정을 신청하고 애플리케이션을 만들어야 합니다. 생성 완료

주식 분석을 위한 필수 도구: PHP 및 JS에서 캔들 차트를 그리는 단계를 배우십시오. 인터넷과 기술의 급속한 발전으로 주식 거래는 많은 투자자에게 중요한 방법 중 하나가 되었습니다. 주식분석은 투자자의 의사결정에 있어 중요한 부분이며 캔들차트는 기술적 분석에 널리 사용됩니다. PHP와 JS를 사용하여 캔들 차트를 그리는 방법을 배우면 투자자가 더 나은 결정을 내리는 데 도움이 되는 보다 직관적인 정보를 얻을 수 있습니다. 캔들스틱 차트는 주가를 캔들스틱 형태로 표시하는 기술 차트입니다. 주가를 보여주네요

얼굴 검출 및 인식 기술은 이미 상대적으로 성숙하고 널리 사용되는 기술입니다. 현재 가장 널리 사용되는 인터넷 응용 언어는 JS입니다. 웹 프런트엔드에서 얼굴 감지 및 인식을 구현하는 것은 백엔드 얼굴 인식에 비해 장점과 단점이 있습니다. 장점에는 네트워크 상호 작용 및 실시간 인식이 줄어 사용자 대기 시간이 크게 단축되고 사용자 경험이 향상된다는 단점이 있습니다. 모델 크기에 따라 제한되고 정확도도 제한됩니다. js를 사용하여 웹에서 얼굴 인식을 구현하는 방법은 무엇입니까? 웹에서 얼굴 인식을 구현하려면 JavaScript, HTML, CSS, WebRTC 등 관련 프로그래밍 언어 및 기술에 익숙해야 합니다. 동시에 관련 컴퓨터 비전 및 인공지능 기술도 마스터해야 합니다. 웹 측면의 디자인으로 인해 주목할 가치가 있습니다.

도메인 간 요청 처리를 위해 Hyperf 프레임워크를 사용하는 방법 소개: 최신 네트워크 애플리케이션 개발에서 도메인 간 요청은 일반적인 요구 사항이 되었습니다. 프런트엔드와 백엔드 개발의 분리를 보장하고 사용자 경험을 향상시키기 위해 도메인 간 요청 처리에 Hyperf 프레임워크를 사용하는 것이 특히 중요해졌습니다. 이 문서에서는 도메인 간 요청 처리를 위해 Hyperf 프레임워크를 사용하는 방법을 소개하고 특정 코드 예제를 제공합니다. 1. 크로스 도메인 요청이란 XMLHttpReques를 통해 브라우저에서 실행되는 JavaScript를 의미합니다.

PHP와 JS를 사용하여 주식 캔들 차트를 만드는 방법 주식 캔들 차트는 주식 시장에서 흔히 사용되는 기술 분석 그래픽으로 시가, 종가, 최고가 등의 데이터를 그려서 투자자가 주식을 보다 직관적으로 이해할 수 있도록 도와줍니다. 주식의 최저 가격. 이 기사에서는 특정 코드 예제와 함께 PHP 및 JS를 사용하여 주식 캔들 차트를 만드는 방법을 설명합니다. 1. 준비 시작하기 전에 다음 환경을 준비해야 합니다. 1. PHP를 실행하는 서버 2. HTML5 및 Canvas를 지원하는 브라우저 3

인터넷 금융의 급속한 발전으로 인해 주식 투자는 점점 더 많은 사람들의 선택이 되었습니다. 주식 거래에서 캔들 차트는 주가의 변화 추세를 보여주고 투자자가 보다 정확한 결정을 내리는 데 도움이 되는 일반적으로 사용되는 기술적 분석 방법입니다. 이 기사에서는 PHP와 JS의 개발 기술을 소개하고 독자가 주식 캔들 차트를 그리는 방법을 이해하도록 유도하며 구체적인 코드 예제를 제공합니다. 1. 주식 캔들 차트의 이해 주식 캔들 차트를 그리는 방법을 소개하기 전에 먼저 캔들 차트가 무엇인지부터 이해해야 합니다. 캔들스틱 차트는 일본인이 개발했습니다.

JS 및 Baidu Maps를 사용하여 지도 다각형 그리기 기능을 구현하는 방법 현대 웹 개발에서 지도 애플리케이션은 일반적인 기능 중 하나가 되었습니다. 지도에 다각형을 그리면 사용자가 보고 분석할 특정 영역을 표시하는 데 도움이 될 수 있습니다. 이 기사에서는 JS 및 Baidu Map API를 사용하여 지도 다각형 그리기 기능을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 먼저 Baidu Map API를 도입해야 합니다. 다음 코드를 사용하여 Baidu Map API의 JavaScript를 HTML 파일로 가져올 수 있습니다.

JS 및 Baidu Maps를 사용하여 지도 클릭 이벤트 처리 기능을 구현하는 방법 개요: 웹 개발에서는 지리적 위치 및 지리적 정보를 표시하기 위해 지도 기능을 사용해야 하는 경우가 많습니다. 지도에서의 클릭 이벤트 처리는 지도 기능에서 일반적으로 사용되는 중요한 부분입니다. 이 글에서는 JS와 Baidu Map API를 사용하여 지도의 클릭 이벤트 처리 기능을 구현하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 단계: Baidu Map API 파일 가져오기 먼저 다음 코드를 통해 Baidu Map API 파일을 가져올 수 있습니다.
