2015-06-22 3 views
0

Я долгое время переполнен и, в конце концов, подписался. Я прошел через тонны нитей, но никто не мог помочь мне с моей проблемой. Я собираюсь создать RESTful API с тонким фреймворком в php и иметь проблемы с запросами на передачу crossdomain.RESTful api - перекрестный домен запрос на отправку

Позвольте мне кратко рассказать о том, что я сделал. После того, как я обратился к первым запросам GET, я искал метод для простого тестирования моего API и нашел аддон Firefox RESTClient, он работал хорошо, поэтому я продолжал его использовать. После нескольких тестов я проверил собственный код на другом сервере и возникла проблема.

Запрос на перекрестный запрос заблокирован: политика одного и того же происхождения запрещает чтение удаленного ресурса в% 1 $ S. (Причина: канал предпросмотра CORS не удалось).

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

Теперь прежде всего позвольте мне показать вам мой тонких рамочного код PHP

<?php 
header('access-control-allow-origin: *'); 
header('Content-Type: application/json'); 

function output($arr){ 
    echo json_encode($arr); 
    exit; 
} 

require 'Slim/Slim.php'; 
\Slim\Slim::registerAutoloader(); 
$app = new \Slim\Slim(); 

$app->put(
    '/put', 
    function() { 
     $output = array("status"=>"200","message"=>"This is a put test"); 
     output($output); 
    } 
); 

$app->run(); 
?> 

И моего test.html

<html> 
    <head> 
     <script src="http://code.jquery.com/jquery-latest.js"></script> 
    </head> 
    <body> 
     <script type="text/javascript"> 

      (function($) { 
        var url = 'URL'; 

        $.ajax({ 
        type: 'put', 
        url: url, 
        async: false, 
        crossDomain:true, 
        dataType: 'json', 
        success: function(json) { 
         console.log(json); 
        }, 
        error: function(e) { 
         console.log(e.message); 
        } 
       }); 

      })(jQuery); 

     </script> 
    </body> 
</html> 

Может кто-то пожалуйста, объясните мне, как я могу получить этот запрос PUT работаю , Я действительно в этом отчаянном настроении прямо сейчас. Я понимаю всю эту междоменную тему, но почему он не отпускает ее после того, как я установил источник доступа-allow-origin в php-коде? Что делает аддон firefox другим? ...

+0

Расширение Firefox не обязательно должно следовать одной и той же политике происхождения, любой javascript, который запускается на странице, делает. Проблема может быть связана с установкой 'async: false', попробуйте установить значение' true' и посмотреть, что произойдет. – idbehold

+0

спасибо за вашу помощь, но это не исправляет ошибку, как раньше – Jan

+0

попробуйте поместить следующий код в ajax .... contentType: 'application/x-www-form-urlencoded', –

ответ

1

Кажется, что вы забыли добавить методы в заголовок. 1

header('Access-Control-Allow-Origin: *'); 
header('Access-Control-Allow-Methods: GET, POST'); 
Смежные вопросы