2013-07-03 2 views
2

У меня есть HTML-форма на сайте на WordPress, которая позволяет пользователям видеть записи базы данных, соответствующие входам формы. Использование AJAX на основе этого урока http://www.w3schools.com/ajax/ajax_aspphp.asp У меня есть javascript, который использует GET в php-скрипте на сервере. однако Javascript не разрешается работать защитой XSS консольный вывод заключается в следующемJavascript не выполняется из-за защиты XSS

The XSS Auditor refused to execute a script in 'page' because its source code was found within the request. The auditor was enabled as the server sent neither an 'X-XSS-Protection' nor 'Content-Security-Policy' header. 

ли это вызвано тем, как вызывается мой JavaScript?

Источник:

<html> 
<head> 
<script> 
function showUser(degreecourse, Interest, gradyear){ 
var xmlHttp = new XMLHttpRequest(); 
xmlhttp.onreadystatechange=function() 
    { 
    if (xmlhttp.readyState==4 && xmlhttp.status==200) 
    { 
    document.getElementById("info").innerHTML=xmlhttp.responseText; 
    } 
    else{document.getElementById("info").innerHTML}="Error"; 
    } 
xmlhttp.open("GET","/getcandidates.php?q=degreecourse=" + escape(degreecourse) + "&Interest=" + escape(Interest) + "&gradyear=" + escape(gradyear),true); 
xmlhttp.send(); 
return false; 
} 
</script> 
</head> 
<body> 
Filter By: 


<form > 
<table> 
<tbody> 
<tr> 
<td>Degree Course:</td> 
<td><select name="degreecourse" onchange = "showUser(document.getElementById('degreecourse').value, document.getElementById('Interest').value, document.getElementById('gradyear').value)"> 
<option>Any</option><option>Archaeology</option><option>Biochemistry</option><option>Biology</option><option>Biomedical Sciences</option><option>Chemistry</option><option>Computer Science</option><option>Economics</option><option>Education</option><option>Electronics</option><option>English</option><option>Environmental Studies</option><option>History</option><option>History of Art</option><option>Language and Linguistic Studies</option><option>Law</option><option>Management</option><option>Mathematics</option><option>Medicine</option><option>Music</option><option>Nursing, Midwifery and Healthcare</option><option>Philosophy</option><option>Physics</option><option>Politics</option><option>Politics, Economics and Philosophy</option><option>Psychology</option><option>Social Policy and Social Work</option><option>Social and Political Sciences</option><option>Sociology</option><option>Theatre, Film and Television</option></select></td> 
</tr> 

<tr> 
<td>Interest:</td> 
<td><select name="Interest" onchange = "showUser(document.getElementById('degreecourse').value, document.getElementById('Interest').value, document.getElementById('gradyear').value)"> 
<option>Any</option><option>Management</option><option>Marketing<option>Technical</option> 
</select> 
</td> 
</tr> 

<tr> 
<td>Graduating After:</td><td><input id="gradyear" type="number" value=2013 name="gradyear" onchange = "showUser(document.getElementById('degreecourse').value, document.getElementById('Interest').value, document.getElementById('gradyear').value)"/></td> 
</tr> 
</tbody> 
</table> 
</form> 
<br> 
<div id="info"><b>Person info will be listed here.</b></div> 

</body> 
</html> 

РНР файл возвращает таблицу HTML следующим образом после подключения к базе данных.

echo "<table border='1'> 
<tr> 
<th>Firstname</th> 
<th>Lastname</th> 
<th>Degree Subject</th> 
<th>Email Address</th> 
<th>Graduating Year</th> 
<th>Interest</th> 
<th>CV</th> 
</tr>"; 

while($row = mysqli_fetch_array($result)) 
    { 
    echo "<tr>"; 
    echo "<td>" . $row['Forname'] . "</td>"; 
    echo "<td>" . $row['Surname'] . "</td>"; 
    echo "<td>" . $row['DegreeSubject'] . "</td>"; 
    echo "<td>" . $row['EmailAddress'] . "</td>"; 
    echo "<td>" . $row['GraduatingYear'] . "</td>"; 
    echo "<td>" . $row['Interest'] . "</td>"; 
    echo "<td><form action='www.yorkcommunityconsulting.co.uk/CVs/".$row['CVurl']."><input type='submit' value='See CV'></form></td>"; 
    echo "</tr>"; 
    } 
echo "</table>"; 
+1

'потому что его исходный код был найден в запросе' ... Что такое URL? – SLaks

+2

Не используйте и не подключайтесь к учебникам из школ w3, пожалуйста. Они по сути являются барахлом. –

+0

http://www.yorkcommunityconsulting.co.uk/search-for-staff/ проблема могла быть вызвана тем фактом, что это был неопубликованный черновик в wordpress. –

ответ

0
  1. Функция побег() осуждался в JavaScript версии 1.5. Вместо этого используйте encodeURI() или encodeURIComponent(). Я не уверен, что он доставит вас туда, где вы хотите, но может решить хотя бы часть вашей проблемы.

  2. Вы пытались использовать jQuery (GET/load) вместо простого JS, чтобы узнать, получаете ли вы тот же результат?

  3. У вас есть <option> тег, который не неплотно, (см «Маркетинг»)
  4. Я не JS гуру, но вы не должны закрыть ваш «еще» немного позже? например, после: «Ошибка»; вместо знака «=»?
 
    else{document.getElementById("info").innerHTML="Error";} 

    instead of 

    else{document.getElementById("info").innerHTML}="Error"; 
Смежные вопросы