2013-05-22 3 views
0

Согласно Same Origin Policy, SOP не должен применяться к файлу: // protocol, но почему мой код не работает? Я запускаю эту страницу тестирования из своей локальной системы, и у меня есть abc.txt в том же каталоге, что и html-страница. Если я изменю URL-адрес на http://www.google.com/, он тоже не работает. Я не понимаю, почему, может кто-нибудь объяснить?Не удалось создать локальный файл ajax с локальной страницы html

<!doctype html> 
<html lang="us"> 
<head> 
    <meta charset="utf-8"> 
    <title>jQuery UI Example Page</title> 
    <link href="css/sunny/jquery-ui-1.10.2.custom.css" rel="stylesheet"> 
    <script src="js/jquery-1.9.1.js"></script> 
    <script src="js/jquery-ui-1.10.2.custom.js"></script> 
    <script> 
    $.support.cors = true; 
    $(function(){ 
     $(".btn1").button().click(function(){ 
      $.ajax({ 

       url: "abc.txt" 

      }).done(function(result) { 
       alert("done"); 
       $(".content").html(result); 
      }).fail(function() { 
       alert("error"); 
      }); 
     }); 

    }); 

    </script> 
</head> 
<body> 

<button class="btn1">Click me!</button> 

<div class="content"></div> 

</body> 
</html> 

Отредактировано: консоль напечатана, как показано ниже:

XMLHttpRequest не может загрузить файл : /// C:/Users/YC/Desktop/JQuery% 20ajax% 20testing/jquery- щ-1.10.2.custom/JQuery-щ-1.10.2.custom/abc.txt. Происхождение null не разрешено Access-Control-Allow-Origin.

* Это не работает для Firefox, IE тоже.

+0

Попробуйте установить 'dataType:" text ",' option также в вашем вызове ajax .. –

+1

вы можете запустить хром с '--disable-web-security 'или' --allow-file-access-from-files' –

+0

Что говорит консоль –

ответ

2

Это не ошибка, это функция безопасности, которую вы не можете/не сможете обойти на компьютере клиента.

В хроме вы можете отключить его, добавив следующий флаг в командной строке

--disable-web-security

Firefox может иметь что-то подобное, но я не знаю. Это полезно только для целей разработки, и вы не можете полагаться на это поведение в своем приложении.

Вы должны действительно просто использовать сервер ...

+0

Второй вариант больше не является действительным обходом - удаляется с помощью редактирования. – smaudet

+0

@smaudet Отменить запрос. Оставлять комментарий об этом достаточно, и тогда автору ответа будет отвечать, чтобы определить, следует ли исключить вторичный вариант из ответа или нет. –

0

Немного безопаснее флаг командной строки, чем «» --disable-веб-безопасности «» является

--allow-file-access-from-files 

Это не полностью отключить все функции безопасности. Тем не менее этот флаг не должен использоваться в продуктивных средах ...

Смежные вопросы