Я делаю firefox OS webApp jQuery.Firefox os привилегированное приложение ошибка: вызов eval() заблокирован csp в jquery 1.9.1
Тип приложения привилегирован для использования systemXHR.
Таким образом, я определяю разрешение в файле манифеста. Приложение хорошо работает на тренажере.
Но когда я нажимаю приложение на устройство и нажимаю любую кнопку, обнаружена ошибка CSP.
Error: Error: call to eval() blocked by CSP
Source File: app://0cd689b3-a514-4a1c-b1c4-efe372189761/js/jquery-1.9.1.js Line: 603
Информация об устройстве
- версия ОС: 1.1.0.0.-пререлиз
- версия платформы: 18,0
- Git фиксации информации: 2013-05-01 19:48:40
Примерный код
<div data-role="page" id="signinPageId">
<script src="js/signin_controller.js"></script>
<div data-role="header">
<h3>Sign In</h3>
<a href="#" data-icon="arrow-l" data-rel="back">Back</a>
</div>
<div data-role="content">
<a id="signinBtn" href="#" data-role="button" class="ui-disabled">Sign In</a>
</div>
</div>
Другие коды сценариев описаны в signin_controller.js
function enableSigninBtn(inputEl){
if(inputEl.val().length==0){
$("#signinBtn").addClass("ui-disabled");
}
else{
$("#signinBtn").removeClass("ui-disabled");
}
}
................
................
$('#signinPageId').on('pagebeforeshow',function(){
$('#emailForm').bind('keyup',function(){
if($(':input[type=password]').val().length)
{
enableSigninBtn($(this));
}
});
$('#passwordForm').bind('keyup',function(){
if($(':input[type=email]').val().length)
{
enableSigninBtn($(this));
}
});
$('#signinBtn').bind('click',function(){
initSignIn($(':input[type=email]').val(),$(':input[type=password]').val());
});
});
Так я определяю ПЕС в файл манифеста
"csp" : "default-src *; script-src 'self' 'unsafe-eval'; object-src 'none'; style-src 'self' 'unsafe-inline'",
"default_locale": "en",
"type": "privileged",
"permissions": {
"systemXHR": {
"description": "Required for comunication with otehr sever"
}
}
Как я могу избежать этого ПСА?
Спасибо за ваш комментарий. Но нарушение csp происходит, за исключением небезопасных-eval. образец страницы не первая. поэтому я добавил тег
Вместо вызова JQuery AJAX, вы можете напрямую Вызов службы входа в систему с помощью XHR как:
Таким образом, вы не будете использовать Eval JQuery (в).
источник
2013-06-04 10:08:48 Eldelshell
На самом деле есть открытая проблема, связанная с этим в JQuery: http://bugs.jquery.com/ticket/13862
Firefox OS привилегированных приложения с использованием ПСА, как это: «по умолчанию-Src *; скриптового-Src 'я', объект-Src«ни один «, стиль-Src„сам“ 'небезопасным-рядный»
(https://developer.mozilla.org/en-US/Apps/Developing/Packaged_apps)
Таким образом, вы не можете расслабиться ПСУ с этой линией в манифесте.
Единственный способ избежать этого - использовать инфраструктуру, совместимую с CSP.
источник
2013-11-12 22:15:50 daf182