_Nik
On 10/26/2012 2:14 AM, Stone wrote:
This is misunderstand able for me.
How can I submit as a parameter?
Dne čtvrtek, 25. října 2012 17:24:05 UTC+2 Nikolas Stevenson-Molnar napsal(a):It looks like you're submitting your request via AJAX and using the
X-CSRFToken header. It's very possible that one of your proxies isn't
forwarding that header correctly. You might try submitting it as an
actual form parameter instead.
_Nik
On 10/25/2012 6:01 AM, Stone wrote:
> Over Firefox and Firebug I have received that CSRF Validation failed.
> My server is running on apache2-2.2.22 and there are two proxy's
> All template file and forms includes csrf_token tag.
>
> On Oct 24, 6:54 pm, Nikolas Stevenson-Molnar <nik.mol...@consbio.org>
> wrote:
>> It's possible that the CSRF token isn't being sent correctly. As a test,
>> try adding the @csrf_exempt decorator to your view. If you no longer get
>> the 403, then it's a CSRF problem.
>>
>> _Nik
>>
>> On 10/24/2012 6:31 AM, Stone wrote:
>>
>>
>>
>>
>>
>>
>>
>>> My Django application is running on real server (apache2-2.2.22).
>>> In urls.py is mentioned:
>>> (r'^configSave/$', configSave),
>>> My HTML is bellow. After pressing on configSave I am receiving HTTP
>>> 403 error page.
>>> In view.py is mentioned:
>>> def configSave(request):
>>> configFile={}
>>> if os.path.isfile(SSO_CONF) != False:
>>> f = open(SSO_CONF,"r")
>>> for line in f:
>>> line = line.strip()
>>> if re.search('^#',line) != None:
>>> '''print 'This is the commentary'''
>>> else:
>>> '''print line'''
>>> try:
>>> name, value = line.split('=',2)
>>> configFile[name]=value
>>> print '<%s>%s</%s>' % (name, value, name)
>>> except ValueError, err:
>>> ''' print 'This is empty row'''
>>> configFile['SlaveDeactAppl']=configFile['SlaveDeactAppl']. split(',');
>>> configFile['SlaveDeactScripts']=configFile[' SlaveDeactScripts'].split(',') ;
>>> configFile={}
>>> if os.path.isfile(SSO_CONF) != False:
>>> f = open(SSO_CONF,"r")
>>> for line in f:
>>> line = line.strip()
>>> if re.search('^#',line) != None:
>>> '''print 'This is the commentary'''
>>> else:
>>> '''print line'''
>>> try:
>>> name, value = line.split('=',2)
>>> configFile[name]=value
>>> print '<%s>%s</%s>' % (name, value, name)
>>> except ValueError, err:
>>> ''' print 'This is empty row'''
>>> configFile['SlaveDeactAppl']=configFile['SlaveDeactAppl']. split(',');
>>> configFile['SlaveDeactScripts']=configFile[' SlaveDeactScripts'].split(',') ;
>>> c = {}
>>> c = Context({
>>> 'config':configFile,
>>> 'item':2,
>>> })
>>> c.update(csrf(request))
>>> return
>>> render_to_response('config.html',c,context_instance= RequestContext(request))
>>> By the way how to really fast define logging mechanism which can be
>>> use for debugging.
>>> Is this my programmer approach corrector is there any other way how to
>>> react on the pressing of button?
>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
>>> www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd ">
>>> {% extends "index.html" %}
>>> {% block content %}
>>> <html lang="en-US" xml:lang="en-US" xmlns="http://www.w3.org/1999/
>>> xhtml">
>>> <script type="text/javascript">
>>> top.helpID="SSO_config";
>>> $(document).ready(function () {
>>> function sendAjax()
>>> {
>>> $(document).ajaxSend(function(event, xhr, settings) {
>>> function getCookie(name) {
>>> var cookieValue = null;
>>> if (document.cookie && document.cookie != '') {
>>> var cookies = document.cookie.split(';');
>>> for (var i = 0; i < cookies.length; i++) {
>>> var cookie = jQuery.trim(cookies[i]);
>>> if (cookie.substring(0, name.length + 1) == (name
>>> + '=')) {
>>> cookieValue =
>>> decodeURIComponent(cookie.substring(name.length + 1));
>>> break;
>>> }
>>> }
>>> }
>>> return cookieValue;
>>> }
>>> function sameOrigin(url) {
>>> var host = document.location.host; // host + port
>>> var protocol = document.location.protocol;
>>> var sr_origin = '//' + host;
>>> var origin = protocol + sr_origin;
>>> // Allow absolute or scheme relative URLs to same origin
>>> return (url == origin || url.slice(0, origin.length + 1)
>>> == origin + '/') ||
>>> (url == sr_origin || url.slice(0, sr_origin.length +
>>> 1) == sr_origin + '/') ||
>>> !(/^(\/\/|http:|https:).*/.test(url));
>>> }
>>> function safeMethod(method) {
>>> return (/^(GET|HEAD|OPTIONS|TRACE)$/.test(method));
>>> }
>>> if (!safeMethod(settings.type) && sameOrigin(settings.url)) {
>>> xhr.setRequestHeader("X-CSRFToken",
>>> getCookie('csrftoken'));
>>> }
>>> });
>>> }
>>> $("#saveCfg").click(function(event){
>>> sendAjax();
>>> $.ajax({
>>> type: "POST",
>>> url: "/SSO/configSave/",
>>> dataType: "text",
>>> success: function(data) {
>>> alert(data);
>>> },
>>> error: function(xhr,ajaxOptions,thrownError) {
>>> alert(xhr.status +" "+xhr.statusText);
>>> alert(thrownError);
>>> }
>>> });
>>> });
>>> });
>>> </script>
>>> <body class="bodyClass">
>>> <table class="body_table">
>>> <tr>
>>> <th colspan="4" class="thead"><b> IP configuration</b></
>>> th>
>>> </tr>
>>> <tr>
>>> <td>Master IP address</td>
>>> <td>
>>> <input id="mip" style="width: 100px;"
>>> value="{{config.MasterIPAddress}}"/>
>>> </td>
>>> <td>Slave IP address</td>
>>> <td>
>>> <input id="sip" style="width: 100px;"
>>> value="{{config.SlaveIPAddress}}"/>
>>> </td>
>>> </tr>
>>> <tr>
>>> <td>Master netmask</td>
>>> <td>
>>> <input id="mnetmask" style="width: 100px;"
>>> value="{{config.MasterIPNetmask}}"/>
>>> </td>
>>> <td>Slave netmask</td>
>>> <td>
>>> <input id="snetmask" style="width: 100px;"
>>> value="{{config.SlaveIPNetmask}}"/>
>>> </td>
>>> </tr>
>>> <tr>
>>> <td>Master broadcast</td>
>>> <td>
>>> <input id="mbroadcast" style="width: 100px;"
>>> value="{{config.MasterIPBroadcast}}"/>
>>> </td>
>>> <td>Slave broadcast</td>
>>> <td>
>>> <input id="sbroadcast" style="width: 100px;"
>>> value="{{config.SlaveIPBroadcast}}"/>
>>> </td>
>>> </tr>
>>> <tr>
>>> <td></td>
>>> <td></td>
>>> <td></td>
>>> <td></td>
>>> </tr>
>>> <tr>
>>> <td>Lancard name</td>
>>> <td><span id="cardname"></span>{{config.LanCardName}}</td>
>>> <td>MAC address</td>
>>> <td><input id="cardmac" value="{{config.LanCardMAC}}"/></td>
>>> </tr>
>>> <tr>
>>> <th colspan="4" class="thead"><b> Configuration
>>> parameters</b>
>>> </th>
>>> </tr>
>>> <tr>
>>> <td>Replication frequency</td>
>>> <td>
>>> <select id="freq">
>>> <option {% if config.MasterBackupFrequency = "daily" %}
>>> selected="selected"{% endif %}>daily</option>
>>> <option {% if config.MasterBackupFrequency = "Monday" %}
>>> selected="selected"{% endif %}>Monday</option>
>>> <option {% if config.MasterBackupFrequency = "Thusday" %}
>>> selected="selected"{% endif %}>Thusday</option>
>>> <option {% if config.MasterBackupFrequency = "Wednesday" %}
>>> selected="selected"{% endif %}>Wednesday</option>
>>> <option {% if config.MasterBackupFrequency = "Thursday" %}
>>> selected="selected"{% endif %}>Thursday</option>
>>> <option {% if config.MasterBackupFrequency = "Friday" %}
>>> selected="selected"{% endif %}>Friday</option>
>>> <option {% if config.MasterBackupFrequency = "Saturday" %}
>>> selected="selected"{% endif %}>Saturday</option>
>>> <option {% if config.MasterBackupFrequency = "Sunday" %}
>>> selected="selected"{% endif %}>Sunday</option>
>>> </select>
>>> </td>
>>> <td>Replication time</td>
>>> <td><input style="width: 40%;" id="backuptime"
>>> value="{{config.MasterBackupStartTime}}"/></ td>
>>> </tr>
>>> <tr>
>>> <td valign="top">Slave deactivated application</td>
>>> <td style="width: 20%;"><span id="appl">
>>> {% for appl in config.SlaveDeactAppl %}
>>> {{ appl }}<br>
>>> {% endfor %}
>>> </span></td>
>>> <td valign="top">Slave deactivated scripts</td>
>>> <td style="width: 20%;"><span id="scripts">
>>> {% for appl in config.SlaveDeactScripts %}
>>> {{ appl }}<br>
>>> {% endfor %}
>>> </span></td>
>>> </tr>
>>> <!-- <div id="buttonPanel" style="display: block;">
>>> <button id="saveTime" class="submitButton ui-state-default ui-
>>> corner-all ui-priority-primary">Save replication parameters</button>
>>> </div> -->
>>> <tr>
>>> <th colspan="4" class="thead"><b> Replication parameters</
>>> b>
>>> </th>
>>> </tr>
>>> <tr>
>>> <td>Replication enable</td>
>>> <td><input type="checkbox" id="replEnable" {% if
>>> config.ReplicationEnable = "yes" %}checked="checked"{% endif %}/></td>
>>> <td>Account used for replication</td>
>>> <td>
>>> <select id="account">
>>> <option {% if config.ReplicationAccount = "engr" %}
>>> selected="selected"{% endif %}>engr</option>
>>> <option {% if config.ReplicationAccount = "root" %}
>>> selected="selected"{% endif %}>root</option>
>>> </select>
>>> </td>
>>> </tr>
>>> <tr>
>>> <td>ReplicationRetryInterval</td>
>>> <td><span id="interval">{{config.ReplicationRetryInterval}}</ span></
>>> td>
>>> <td>ReplicationRetryCount</td>
>>> <td><span id="count">{{config.ReplicationRetryCount}}</span> </td>
>>> </tr>
>>> <tr valign="center" align="center" colspan="4">
>>> <td colspan="4">
>>> <input type="button" id="saveCfg" valign="center"
>>> class="submitButton ui-state-default ui-corner-all ui-priority-
>>> primary" onclick="javascript:location.href='/SSO/configSave/';"
>>> style="width:200px;" value="Save complete settings"/>
>>> </td>
>>> </tr>
>>> </table>
>>> </body>
>>> </html>
>>> {% endblock %}
No comments:
Post a Comment