시나리오 재발 과정:
<code>机器A局域网地址:192.168.9.8 机器B局域网地址:192.168.9.9 </code>
<code>分别配置机器A、B的hosts地址: 配置机器A的地址:192.168.9.8 --> a.site.com 配置机器B的地址:192.168.9.9 --> b.site.com </code>
머신 A는 프런트엔드 js 코드이고 서비스를 시작하며 머신 B의 첫 번째 주소(서버 측을 나타냄)를 요청합니다.
http://b.site.com:8080/ on 브라우저 로그인/..., 서버는 요청과 동시에 쿠키를 삽입합니다.
쿠키 키를 'site'로, 값을 'date'로, 도메인을 .site.com으로, 경로를 /를 검색한 후 서버에서 새 페이지를 열고 새 페이지에서 http://a.site.com:8080/index를 요청하면
http://b.site.com:8080을 볼 수 있습니다. /
크롬 콘솔 쿠키를 통해 주입했는데... Ajax를 통해 인터페이스를 사용할 때 요청 헤더에 쿠키가 나타나지 않습니다. get, post, asynchronous, synchronous 등 다양한 방법을 시도했지만 없음. 그 중 작동합니다. 드디어 jsonp 메소드를 사용했더니 쿠키가 등장했습니다
<code>$("a").click(function(event) { $.ajax({ url: 'http://b.site.com:8080/test/test.htm', type: 'post', dataType: 'json', data: {'token': 'value'}, }) .done(function() { console.log("success"); }) .fail(function() { console.log("error"); }) .always(function() { console.log("complete"); }); }); </code>
<code>function flightHandler(data) { console.log(data); // body... }; $("a").click(function(event) { $.ajax({ type: "get", url: "http://b.site.com:8080/test/test.htm", dataType: "jsonp", jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) jsonpCallback:"flightHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据 success: function(data){ console.log(data); }, error: function(){ alert('fail'); } }); }); </code>
답글 내용:
<code>机器A局域网地址:192.168.9.8 机器B局域网地址:192.168.9.9 </code>
<code>分别配置机器A、B的hosts地址: 配置机器A的地址:192.168.9.8 --> a.site.com 配置机器B的地址:192.168.9.9 --> b.site.com </code>
머신 A는 프런트엔드 js 코드이고 서비스를 시작하며 머신 B의 첫 번째 주소(서버 측을 나타냄)를 요청합니다.사용하기 쉽지 않은 코드는 다음과 같습니다.http://b.site.com:8080/ on 브라우저 로그인/..., 서버는 요청과 동시에 쿠키를 삽입합니다.
쿠키 키를 'site'로, 값을 'date'로, 도메인을 .site.com으로, 경로를 /를 검색한 후 서버에서 새 페이지를 열고 새 페이지에서 http://a.site.com:8080/index를 요청하면
http://b.site.com:8080을 볼 수 있습니다. /
크롬 콘솔 쿠키를 통해 주입했는데... Ajax를 통해 인터페이스를 사용할 때 요청 헤더에 쿠키가 나타나지 않습니다. get, post, asynchronous, synchronous 등 다양한 방법을 시도했지만 없음. 그 중 작동합니다. 드디어 jsonp 메소드를 사용했더니 쿠키가 등장했습니다
유용한 코드는 다음과 같습니다.
<code>$("a").click(function(event) { $.ajax({ url: 'http://b.site.com:8080/test/test.htm', type: 'post', dataType: 'json', data: {'token': 'value'}, }) .done(function() { console.log("success"); }) .fail(function() { console.log("error"); }) .always(function() { console.log("complete"); }); }); </code>
전문가에게 도움을 요청하여 문제를 해결해 주시면 감사하겠습니다
<code>function flightHandler(data) { console.log(data); // body... }; $("a").click(function(event) { $.ajax({ type: "get", url: "http://b.site.com:8080/test/test.htm", dataType: "jsonp", jsonp: "callback",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback) jsonpCallback:"flightHandler",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据 success: function(data){ console.log(data); }, error: function(){ alert('fail'); } }); }); </code>
withCredentials=true, 서버가 교차 도메인을 허용하는지 확인하세요. 자세한 내용은 cors
를 참조하세요.
도메인은 당신이 말하는 것과 다릅니다. 쿠키 도메인과 Ajax 도메인은 같은 것이 아닙니다