2016-11-22 1 views
-1

Я пытаюсь сделать запрос POST во внешнем домене, но я не могу получить доступ к файлам сервера, чтобы их изменить.Отправить запрос JSON POST во внешний домен без доступа к серверу

Когда я делаю этот запрос, я получаю следующую ошибку

XMLHttpRequest не может загрузить https://external.com. Нет Заголовок «Access-Control-Allow-Origin» присутствует на запрошенном ресурсе . Origin 'https://www.ownedwebsite.com' поэтому нет разрешенный доступ.

В чем проблема?

Вот код, я использую:

$(document).ready(function(){ 
      $("#submit").on('click', function(){ 
       event.preventDefault(); 
       $.ajax({ 
        url: 'https://external.com', 
        type : "POST", 
        crossDomain: true, 
        dataType : 'json', 
        beforeSend: function (request) 
        { 
        //request.setRequestHeader("name", "value"); 
        }, 
        data : $("#formCart").serialize(), 
        success : function(result) { 
        alert('POST done.'); 
        }, 
        error: function(xhr, resp, text) { 
         alert('POST failed.'); 
        } 
       }) 
      }); 
     }); 

Что я мог сделать? Все, что мне нужно сделать, это отправить данные формы POST в формате JSON.

+0

Возможный дубликат запроса [JQuery .ajax() POST бросает 405 (Method Not Allowed) на RESTful WCF] (http://stackoverflow.com/questions/17333013/jquery-ajax-post-request-throws-405-method-not-allowed-on-restful-wcf) – Sven

+0

звоните провайдеру external.net и спрашивайте их, чтобы добавить вас в заголовок CORS – madalinivascu

+0

Мне нужно выполнить запрос, не будучи отрегулированным, чтобы изменить CORS h eader и т. д., так что нет, я не могу «позвонить провайдеру» @madalinivascu –

ответ

0

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

, если вы просто хотите, чтобы захватить страницу, то вы можете сделать это с heroku api

$(document).ready(function(){ 
 
     var text = 'https://login.yahoo.com/'; 
 
     $.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(
 
      'https://en.wikipedia.org/wiki/Thomas_Alva_Edison_Memorial_Tower_and_Museum', 
 
      function (response) { 
 

 
      var res = response; 
 
      $('#yahoo').append(res); 
 

 

 
     }); 
 

 
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js"></script> 
 
<div id="yahoo"></div>

+0

Мне нужно отправить запрос POST на него, а не просто получить страницу. –

+0

зарегистрируйтесь для ключа api, чтобы они задали заголовок 'allow your site' – EaBangalore

+0

, иначе используйте 'cURL', с этим вы можете войти на другой сайт, это пример' POST' – EaBangalore