Ajax 크로스 도메인 문제를 해결하는 방법

coldplay.xixi
풀어 주다: 2020-10-29 09:25:27
원래의
2209명이 탐색했습니다.

Ajax 도메인 간 문제에 대한 해결 방법: 1. 액세스를 허용하도록 응답 헤더에 헤더를 추가합니다. 2. jsonp는 요청 가져오기만 지원하고 요청 게시는 지원하지 않습니다. 4. nginx를 사용하여 엔터프라이즈 수준을 구축합니다. 인터페이스 게이트웨이. 추천 무료 학습:

Ajax 크로스 도메인 문제를 해결하는 방법

액세스 허용

Cross-Origin Resource Sharing (CORS) Cross-Origin Resource Sharing 이 크로스 도메인 액세스 솔루션의 보안 기반은 "JavaScript가 이 HTTP 헤더를 제어할 수 없음"을 기반으로 합니다. 대상 도메인에서 반환한 HTTP 헤더를 통한 승인이 필요합니다. 도메인 간 접근을 허용할지 여부입니다.

response.addHeader(‘Access-Control-Allow-Origin:*’);//允许所有来源访问 
response.addHeader(‘Access-Control-Allow-Method:POST,GET’);//允许访问的方式
로그인 후 복사

해결책 2: jsonp는 get 요청만 지원하고 post 요청은 지원하지 않습니다.

사용법: ①dataType을 jsonp로 변경 ②jsonp: "jsonpCallback"————백엔드로 전송되는 실제 값은 http://입니다. a.a.com/ a/FromServlet?userName=644064&jsonpCallback=jQueryxxx ③백엔드는 get 요청에서 jsonpCallback을 얻습니다. ④콜백 구조를 구성합니다

$.ajax({
type : "GET",
async : false,
url : "http://a.a.com/a/FromServlet?userName=644064",
dataType : "jsonp",//数据类型为jsonp  
jsonp : "jsonpCallback",//服务端用于接收callback调用的function名的参数
success : function(data) {
alert(data["userName"]);
},
error : function() {
alert('fail');
}
});
 
//后端
        String jsonpCallback = request.getParameter("jsonpCallback");
//构造回调函数格式jsonpCallback(数据)
resp.getWriter().println(jsonpCallback+"("+jsonObject.toJSONString()+")");
로그인 후 복사

JSONP 구현 원칙

동일한 원본 정책에 따라 특정 서버의 페이지는 jsonpCallback을 얻을 수 없습니다. 서버 외부의 데이터, 즉 일반 Ajax는 Cross-Domain 요청을 할 수 없습니다. 그러나 img, iframe 및 script와 같은 태그는 예외입니다. 이러한 태그는 src 속성을 통해 다른 서버에 데이터를 요청할 수 있습니다.

인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!