어떤 상황에서 도메인 간 이 발생합니까?
도메인 이름이 http://www.php.cn이라고 가정합니다.
요청한 도메인 이름이 이 도메인 이름과 다른 경우 일반적으로 크로스 도메인에는 허점이 있기 때문에, 일반적인 크로스 도메인 요청 방법은 요청할 수 없습니다.
Solution:
1.window.name
1. 서버는
<script>window.name='{"id":"3", "name":"leisure"}';</script>
2를 반환하고 onload 이벤트a8d03127d746a409cd95a10968b8208d
<script type="text/javascript"> var load = false; function iLoad() { if(load == false) { // 同域处理,请求后会再次重新加载iframe document.getElementById('iframe1').contentWindow.location = '/'; load = true; } else { // 获取window.name的内容,注意必须进行同域处理后方可访问! var data = document.getElementById('iframe1').contentWindow.name; alert(data); // {"id":"3", "name":"leisure"} load = false; } } </script>
3. 양식을 정의하고 양식의 대상을 iframe의 ID로 설정한 다음
<form action="url" method="POST" target="iframe1"> <button type="submit" value="submit" /> </form>
2.JSONP
서버가 콜백({"id": "3", " name": "leisure"});
<script type="text/javascript"> function callback(data) { alert(data); } </script> <script type="text/javascript" src="http://www.php.cn/product.jsp?id=5&jsonp=callback"></script>
3. jQuery.getJSON
서버는 json 형식의 데이터를 반환합니다. test({"id": "3", "name": "leisure" }); 테스트 함수 이름 콜백 매개변수에
$.getJSON(url + "?callback=?", data, function(data) { }
를 정의하세요. jquery는 물음표를 대체할 함수 이름을 자동으로 생성해야 합니다. jQuery.getJSON은 실제로 JSONP를 사용하여 구현됩니다.
4. 교차 도메인 플래시
crossdomain.xml을 서버에 추가
http://www.php.cn/crossdomain.xml
<?xml version="1.0"?> <cross-domain-policy> <allow-access-from domain="*.another.com.cn" /> </cross-domain-policy>
위 내용은 Javascript 크로스 도메인 요청 코드 구현 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!