Подтвердить что ты не робот

Jquery.ajax Access-Control-Allow-Origin

Итак, вот мой вызов:

   $.ajax({
       url: url,
       headers: { 'Access-Control-Allow-Origin': '*' },
       crossDomain: true,
       success: function () { alert('it works') },
       error: function() {alert('it doesnt work')},
       datatype: 'jsonp'
   });

Мой URL-адрес является законным. Вы заметите, что у меня нет набора данных. Я не уверен, что datatype работает правильно, поскольку его фактический xml возвращается, но я тоже это пробовал. Его призыв к sportsdata api. На сайте они показывают вам заголовок запроса x-originating-ip, поэтому я пробовал это, где access-control-allow-origin.

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

4b9b3361

Ответ 1

http://encosia.com/using-cors-to-access-asp-net-services-across-domains/

обратитесь к приведенной выше ссылке для получения дополнительной информации о совместном использовании ресурсов домена.

вы можете попробовать использовать JSONP. Если API не поддерживает jsonp, вам необходимо создать службу, которая выступает посредником между API и вашим клиентом. В моем случае я создал службу asmx.

образец ниже:

ajax call:

$(document).ready(function () {
        $.ajax({
            crossDomain: true,
            type:"GET",
            contentType: "application/json; charset=utf-8",
            async:false,
            url: "<your middle man service url here>/GetQuote?callback=?",
            data: { symbol: 'ctsh' },
            dataType: "jsonp",                
            jsonpCallback: 'fnsuccesscallback'
        });
    });

service (asmx), который вернет jsonp:

[WebMethod]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public void GetQuote(String symbol,string callback)
    {          

        WebProxy myProxy = new WebProxy("<proxy url here>", true);

        myProxy.Credentials = new System.Net.NetworkCredential("username", "password", "domain");
        StockQuoteProxy.StockQuote SQ = new StockQuoteProxy.StockQuote();
        SQ.Proxy = myProxy;
        String result = SQ.GetQuote(symbol);
        StringBuilder sb = new StringBuilder();
        JavaScriptSerializer js = new JavaScriptSerializer();
        sb.Append(callback + "(");
        sb.Append(js.Serialize(result));
        sb.Append(");");
        Context.Response.Clear();
        Context.Response.ContentType = "application/json";
        Context.Response.Write(sb.ToString());
        Context.Response.End();         
    }

Ответ 2

В моей работе у нас есть наши успокоительные услуги на другом номере порта, и данные находятся в db2 на пару AS400. Обычно мы используем метод $.getJSON AJAX, потому что он легко возвращает JSONP с помощью ?callback=? без каких-либо проблем с CORS.

data = 'USER =' +            '& QRYTYPE =' + $( "input [name = QRYTYPE]: checked" ). val();

        //Call the REST program/method returns: JSONP 
        $.getJSON( "http://www.domain.com:8082/rest/resttest?callback=?",data)
        .done(function( json ) {        

              //  loading...
                if ($.trim(json.ERROR) != '') {
                    $("#error-msg").text(message).show();
                }
                else{
                    $(".error").hide();
                    $("#jsonp").text(json.whatever);

                }

        })  
        .fail(function( jqXHR, textStatus, error ) {
        var err = textStatus + ", " + error;
        alert('Unable to Connect to Server.\n Try again Later.\n Request Failed: ' + err);
        });