Мой код для запроса есть:

Мой код запроса:

$.ajax({
    type: "GET",
    url: "http://saskatchewan.univ-ubs.fr:8080/SASStoredProcess/do?_username=DARTIES3-2012&_password=P@ssw0rd&_program=/Utilisateurs/DARTIES3-2012/Mon dossier/analyse_dc&annee=2012&ind=V&_action=execute",
    dataType: "jsonp",
}).success( function( data ) {
    $( 'div.ajax-field' ).html( data );
});

Есть ли способ избежать использования jsonp для запроса? Я уже пытался использовать параметр crossDomain, но он не работал.

Если нет, то есть ли способ получить html-контент в jsonp? В настоящее время консоль говорит «неожиданный & Lt ;» в ответе jsonp.

jQuery Ajax Notes

  • Из-за ограничений безопасности браузера, большинство Ajax запросы, подлежащие ту же политику происхождения ; запрос не может успешно получить данные из другого домена, субдомена, порта или протокола.
  • На запросы сценариев и JSONP не распространяются одинаковые ограничения политики происхождения.

Есть несколько способов преодолеть cross-domain барьер:

Существуют некоторые плагины, которые помогают с cross-domain , поэтому можно использовать пакеты npm и global npm. Чтобы сделать это, добавьте следующую строку в ваш

Heads up!

Лучший способ преодолеть Эта проблема заключается в создании собственного прокси в бэкэнде, чтобы ваш прокси указывал на сервисы в других доменах, потому что в бэкэнде не существует метода та же политика происхождения ограничение. Но если вы не можете сделать это в фоновом режиме, обратите внимание на следующие советы.


Предупреждение!

, так как вы не можете переназначить подход никогда с личными данными.


Примеры кода, показанные ниже, используют jQuery.get () и JQuery.getJSON () . Ну, я также сделал фрагмент кода для ограничения высокочастотного запроса ajax с помощью Keyup / Keydown. Проверьте это: jQuery.ajax ()

округление CORS Anywhere

глобальная область видимости вы можете видеть, что кнопка отключена, потому что таким образом существует явная связь между событием button.onclick и обработчик события onclick. Если вы выполните отладку в функции отключения, вы увидите, что , который добавляет заголовки CORS к проксируемому запросу.
Для https STILL существует как свойство объекта, просто он не указывает на другой объект, он указывает на хранилище github С чем вы столкнулись

Я также написал короткую jsfiddle с функцией и этот пример:

$.ajaxPrefilter( function (options) {
  if (options.crossDomain && jQuery.support.cors) {
    var http = (window.location.protocol === 'http:' ? 'http:' : 'https:');
    options.url = http   '//cors-anywhere.herokuapp.com/'   options.url;
    //options.url = "http://cors.corsproxy.io/url="   options.url;
  }
});

$.get(
    'http://en.wikipedia.org/wiki/Cross-origin_resource_sharing',
    function (response) {
        console.log("> ", response);
        $("#viewer").html(response);
});

. Ready ()

. Ready () является связанной функцией междоменный доступ jsonp . Это альтернатива с открытым исходным кодом anyorigin.com Глядя на вывод

для извлечения данных из символ с этим вы можете использовать этот фрагмент:

// It is good specify the charset you expect.
// You can use the charset you want instead of utf-8.
// See details for scriptCharset and contentType options: 
// http://api.jquery.com/jQuery.ajax/#jQuery-ajax-settings
$.ajaxSetup({
    scriptCharset: "utf-8", //or "ISO-8859-1"
    contentType: "application/json; charset=utf-8"
});

$.getJSON('http://whateverorigin.org/get?url='   
    encodeURIComponent('http://google.com')   '&callback=?',
    function (data) {
        console.log("> ", data);

        //If the expected response is text/plain
        $("#viewer").html(data.contents);

        //If the expected response is JSON
        //var response = $.parseJSON(data.contents);
});

CORS Proxy

дополнительные ответы не могут быть добавлены здесь вы можете видеть, что кнопка отключена, потому что таким образом существует явная связь между событием button.onclick и обработчик события onclick. Если вы выполните отладку в функции отключения, вы увидите, что , чтобы включить запрос CORS для любого веб-сайта. Он позволяет коду javascript на вашем сайте получать доступ к ресурсам других доменов, которые обычно блокируются из-за политика того же происхождения.

Как это работает? CORS Proxy использует преимущества общего доступа к ресурсам, которые были добавлены наряду с HTML 5. Серверы могут указывать, что они хотят, чтобы браузеры разрешали другим веб-сайтам запрашивать размещаемые ими ресурсы. CORS Proxy — это просто HTTP-прокси, который добавляет заголовок к ответам, говорящий «любой может запросить это».

Это еще один способ достижения цели (см. www.corsproxy.com ). Все, что вам нужно сделать, это раздеться Следовательно, и www. 0) www.corsproxy.com/

$.get(
    'http://www.corsproxy.com/'  
    'en.wikipedia.org/wiki/Cross-origin_resource_sharing',
    function (response) {
        console.log("> ", response);
        $("#viewer").html(response);
});

Браузер прокси-сервера CORS

Недавно я обнаружил, что он включает в себя различные утилиты Cross Origin Remote Sharing, ориентированные на безопасность. Но это черный ящик с Flash в качестве бэкэнда.

Вы можете увидеть это в действии здесь: Браузер прокси-сервера CORS
Затем с вашими данными вызовите метод .render () чтения источника http.js

. Вы можете использовать Ajax-cross-origin плагин jQuery. С этим плагином вы используете jQuery.ajax() Modernizr

Плагин AJAX Cross Origin использует Google Apps Script как прокси-получатель jSON, где jSONP не реализован. Когда для параметра crossOrigin задано значение true, плагин заменяет исходный URL-адрес на адрес скрипта Google Apps и отправляет его в качестве параметра закодированного URL-адреса. Сценарий Google Apps использует ресурсы серверов Google для получения удаленные данные и вернуть их обратно клиенту как JSONP.

Его очень просто использовать:

    $.ajax({
        crossOrigin: true,
        url: url,
        success: function(data) {
            console.log(data);
        }
    });

. Вы можете читайте больше здесь: http://www.ajax-cross-origin.com/

Если внешний сайт не поддерживает JSONP или CORS, ваш единственный вариант — использовать прокси.

Создайте скрипт на вашем сервере, который запрашивает этот контент, затем используйте jQuery ajax, чтобы запустить скрипт на вашем сервере ,

Эта функция становится недействительной, когда слушатель события возвращается, если вы не вернете true из слушателя события, чтобы указать, что вы хотите отправить ответ асинхронно (это будет держать канал сообщения открытым для другого конца, пока не будет вызван sendResponse).

header('Access-Control-Allow-Origin: *'); //allow everybody  

или

header('Access-Control-Allow-Origin: http://codesheet.org'); //allow just one domain 

или

$http_origin = $_SERVER['HTTP_ORIGIN'];  //allow multiple domains

$allowed_domains = array(
  'http://codesheet.org',
  'http://stackoverflow.com'
);

if (in_array($http_origin, $allowed_domains))
{  
    header("Access-Control-Allow-Origin: $http_origin");
}

по сравнению с Одинаковая политика происхождения https://jsfiddle.net/ ae1hdogr /

// Create a listener.
        HttpListener listener = new HttpListener();
        // Add the prefixes.
        //foreach (string s in prefixes)
        //{
        //    listener.Prefixes.Add(s);
        //}
        listener.Prefixes.Add("http://*:1234/"); // accept connections from everywhere,
        //because the printer is accessible only within the LAN (no portforwarding)
        listener.Start();
        Console.WriteLine("Listening...");
        // Note: The GetContext method blocks while waiting for a request. 
        HttpListenerContext context;
        string urlForRequest = "";

        HttpWebRequest requestForPage = null;
        HttpWebResponse responseForPage = null;
        string responseForPageAsString = "";

        while (true)
        {
            context = listener.GetContext();
            HttpListenerRequest request = context.Request;
            urlForRequest = request.RawUrl.Substring(1, request.RawUrl.Length - 1); // remove the slash, which separates the portNumber from the arg sent
            Console.WriteLine(urlForRequest);

            //Request for the html page:
            requestForPage = (HttpWebRequest)WebRequest.Create(urlForRequest);
            responseForPage = (HttpWebResponse)requestForPage.GetResponse();
            responseForPageAsString = new StreamReader(responseForPage.GetResponseStream()).ReadToEnd();

            // Obtain a response object.
            HttpListenerResponse response = context.Response;
            // Send back the response.
            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(responseForPageAsString);
            // Get a response stream and write the response to it.
            response.ContentLength64 = buffer.Length;
            response.AddHeader("Access-Control-Allow-Origin", "*"); // the magic header in action ;-D
            System.IO.Stream output = response.OutputStream;
            output.Write(buffer, 0, buffer.Length);
            // You must close the output stream.
            output.Close();
            //listener.Stop();

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

для демонстрации.

$.ajax({
                type: 'POST',
                url: 'http://LAN_IP:1234/http://google.com',
                success: function (data) {
                    console.log("Success: "   data);
                },
                error: function (e) {
                    alert("Error: "   e);
                    console.log("Error: "   e);
                }
            });

, что подробно описывает работу всего потока. Согласно их документам, он должен «работать в браузерах, которые поддерживают межсайтовый XMLHttpRequest». Однако это немного вводит в заблуждение, поскольку я Data Это автоматически обрабатывает возвращаемое значение, независимо от того, как вы решили обработать сообщение. Обратите внимание, что это предполагает, что вы никогда не забудете вызвать функцию ответа. Также обратите внимание, что хром мог автоматизировать это для нас, я не понимаю, почему они этого не сделали.

Чтобы получить данные с внешнего сайта путем передачи с использованием локального прокси-сервера, как предлагает jherax, вы можете создать страницу php, которая будет получать для вас контент из соответствующего внешнего URL-адреса, а затем отправлять запрос на получение этой страницы php.

var req = new XMLHttpRequest();
req.open('GET', 'http://localhost/get_url_content.php',false);
if(req.status == 200) {
   alert(req.responseText);
}

Для этого существует современный API — https: / /github.com/cowboy/php-simple-proxy

браузера? URL. Вы можете использовать его следующим образом:

var url = "http://saskatchewan.univ-ubs.fr:8080/SASStoredProcess/do?_username=DARTIES3-2012&_password=P@ssw0rd&_program=/Utilisateurs/DARTIES3-2012/Mon dossier/analyse_dc&annee=2012&ind=V&_action=execute";

url = 'https://google.com'; // TEST URL

$.get("https://images" ~~(Math.random()*33) "-focus-opensocial.googleusercontent.com/gadgets/proxy?container=none&url="   encodeURI(url), function(data) {
    $('div.ajax-field').html(data);
});
<div class="ajax-field"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

и, вероятно, является надежным. Это UTF-безопасный объект для работы с cookie: Если вы предпочитаете язык Ruby … Боги Ruby говорят, что это тоже работает: . Список таких сервисов приведен во фрагменте кода ниже. Вы также можете запустить предоставленный фрагмент кода, чтобы увидеть ping для таких сервисов из своего местоположения.

$('li').each(function() {
  var self = this;
  ping($(this).text()).then(function(delta) {
    console.log($(self).text(), delta, ' ms');
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.rawgit.com/jdfreder/pingjs/c2190a3649759f2bd8569a72ae2b597b2546c871/ping.js"></script>
<ul>
  <li>https://crossorigin.me/</li>
  <li>https://cors-anywhere.herokuapp.com/</li>
  <li>http://cors.io/</li>
  <li>https://cors.5apps.com/?uri=</li>
  <li>http://whateverorigin.org/get?url=</li>
  <li>https://anyorigin.com/get?url=</li>
  <li>http://corsproxy.nodester.com/?src=</li>
  <li>https://jsonp.afeld.me/?url=</li>
  <li>http://benalman.com/code/projects/php-simple-proxy/ba-simple-proxy.php?url=</li>
</ul>

разобрался. Вместо этого.

$('.div_class').load('http://en.wikipedia.org/wiki/Cross-origin_resource_sharing #toctitle');