액세스 허용Ajax 도메인 간 문제에 대한 해결 방법: 1. 액세스를 허용하도록 응답 헤더에 헤더를 추가합니다. 2. jsonp는 요청 가져오기만 지원하고 요청 게시는 지원하지 않습니다. 4. nginx를 사용하여 엔터프라이즈 수준을 구축합니다. 인터페이스 게이트웨이. 추천 무료 학습:
해결책 2: jsonp는 get 요청만 지원하고 post 요청은 지원하지 않습니다.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’);//允许访问的方式로그인 후 복사
사용법: ①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 속성을 통해 다른 서버에 데이터를 요청할 수 있습니다.