междоменный вызов ajax - PullRequest
3 голосов
/ 02 июля 2010

Я попытался сделать междоменный вызов ajax с использованием родного javascript, и он работает без каких-либо методов jsonp, мне интересно, как это возможно. я прочитал, что междоменные вызовы ajax не могут быть сделаны из-за угрозы безопасности

<html>
<head>

<script type="text/javascript">



function loadXMLDoc()
{
url=document.getElementById('url_data').value;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
</head>
<body>

<h2>AJAX</h2>
<div id="myDiv"></div>

<input type"text" id="url_data" value="http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20flickr.photos.info%20where%20photo_id%3D'2186714153'&format=json"/>

<button type="button" onclick="loadXMLDoc()">Request data</button>
</body>
</html>

может кто-нибудь мне помочь

Ответы [ 2 ]

0 голосов
/ 02 марта 2017

Может быть, эти строки кода решат вашу проблему, которая касается обычного веб-сервиса, созданного в asp .net & call с использованием ajax

          var jsonData = [YOUR JSON PARAMETER];

            $.ajax({
                async: false,
                type: "POST",
                url: [YOUR WEB SERVICE URL],
                contentType: "application/json; charset=utf-8",                  
                data: JSON.stringify({ json: jsonData }),
                dataType: "json",                
                success: OnSuccess,
                failure: function(err) {
                    alert("Error : " + err.d);
                }  
            }); 

            function OnSuccess(data) {
                alert("Success:" + data.d);                       
            }

Вы можете сделать одну вещь для этого, просто нужно установить Access-Control-Allow-Origin & Access-Control-Allow-Headers в CustomeHeaders файл web.config вашего веб-сервиса.

 <add name="Access-Control-Allow-Origin" value="*" />
 <add name="Access-Control-Allow-Headers" value="Content-Type" />

Если вы хотите разрешить только для определенного домена, вы можете сделать это с определенным значением доменавместо * значение

0 голосов
/ 02 июля 2010

На сайте есть заголовок ответа Access-Control-Allow-Origin: *, который разрешает запросы из разных источников с любого (*) сайта.

Это заставляет сервер игнорировать угрозу безопасности и отправлять ответ.Тем не менее, я предлагаю вам использовать тег сценария и обратный вызов вместо xhr для запроса данных, что является стандартным методом запроса JSONP (т. Е. Функция jQuery $.getJSON).Это гораздо надежнее.

...