[Twisted-web] Python and Cors

Deve Krehbiel deve at speedprint.com
Sun Aug 27 11:48:32 MDT 2017


Thank you for the response. In trying that code, it made it so the LAN
cannot move the buttons either. Here is the error list I got:

*web.Server Traceback (most recent call last):*
exceptions.NameError: global name 'origin' is not defined
/usr/lib/python2.7/dist-packages/twisted/web/server.py:189 in process
188                    self._encoder = encoder
189            self.render(resrc)
190        except:
/usr/lib/python2.7/dist-packages/twisted/web/server.py:238 in render
237        try:
238            body = resrc.render(self)
239        except UnsupportedMethod as e:
/usr/lib/python2.7/dist-packages/twisted/web/resource.py:250 in render
249            raise UnsupportedMethod(allowedMethods)
250        return m(request)
251
/usr/local/www/servos.rpy:15 in render_GET
14    def render_GET(self,request):
15        if origin in (self.permitted_origins):
16            request.setHeader('Access-Control-Allow-Origin', origin)
exceptions.NameError: global name 'origin' is not defined

Deve

On Sun, Aug 27, 2017 at 12:03 PM, Donal McMullan <donal.mcmullan at gmail.com>
wrote:

> Perhaps you just need to set the 'Access-Control-Allow-Origin' header?
> Something like this might work:
>
>
> # Import necessary files
>
> import serial
>
> from twisted.web.resource import Resource
>
> # Setup Arduino at correct speed
>
> try:
>
>     arduino = serial.Serial('/dev/ttyACM0', 9600)
>
> except:
>
>     arduino = serial.Serial('/dev/ttyACM1', 9600)
>
>
>
> class MoveServo(Resource):
>
>     isLeaf = True
>
>     permitted_origins = ('http://192.168.1.122:9000',)
>
>
>
>     def render_GET(self,request):
>
>         if origin in (self.permitted_origins):
>
>             request.setHeader('Access-Control-Allow-Origin', origin)
>
>         try:
>
>             # Send value over serial to the Arduino
>
>             arduino.write(request.args['value'][0])
>
>             return 'Success'
>
>         except:
>
>             return 'Failure'
>
>
>
> resource = MoveServo()
>
> On 27 August 2017 at 17:10, Deve Krehbiel <deve at speedprint.com> wrote:
>
>> First post so forgive me if I am not explaining this right.
>>
>> I am trying to make a baby cam and then heavily document it for everyone
>> to have access to. I am using a Raspberry Pi with Rasbian. I am using
>> mjpg-streamer for the streaming with no problems.
>>
>> The problem is I am also using two servos for pan and tilt. To accomplish
>> this I am using an Arduino Uno. This is so I can add IR lighting for night
>> vision, etc later. I am not a programmer so this is getting frustrating
>> after a few weeks of failure.
>>
>> How is it failing you might ask..well, its working perfectly with only
>> ONE exception:
>> Every time I push the button for left/right/up/down I get this:
>>
>> XMLHttpRequest cannot load http://192.168.1.122:81/servos.rpy?value=100P.
>> No 'Access-Control-Allow-Origin' header is present on the requested
>> resource. Origin 'http://192.168.1.122:9000' is therefore not allowed
>> access.
>>
>> On the local area network, it still works, but taking it to the internet
>> it does not.
>>
>> Here are the two programs that make this happen. One is servos.rpy and
>> the other is the supporting HTML/Get script;
>> ****
>> servos.rpy
>> -----------------------------------
>> # Import necessary files
>> import serial
>> from twisted.web.resource import Resource
>> # Setup Arduino at correct speed
>> try:
>>         arduino = serial.Serial('/dev/ttyACM0', 9600)
>> except:
>>         arduino = serial.Serial('/dev/ttyACM1', 9600)
>>
>> class MoveServo(Resource):
>>         isLeaf = True
>>         def render_GET(self,request):
>>                 try:
>>                 # Send value over serial to the Arduino
>>                         arduino.write(request.args['value'][0])
>>                         return 'Success'
>>                 except:
>>                         return 'Failure'
>>
>> resource = MoveServo()
>> ***
>>
>> Now for the HTML/Get script:
>>
>> **
>> <!doctype html>
>> <html>
>> <head>
>> <title>Make Use Of DIY Security Camera</title>
>> <style type="text/css">
>> #container {
>> /* center the content */
>> margin: 0 auto;
>> text-align: center;
>> }
>> </style>
>> </head>
>> <body>
>> <div id="container">
>> <img src="/?action=stream" /><br>
>> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jque
>> ry.min.js"></script><br />
>> <button onclick="servos.move('P', 10)">Left</button>
>> <button onclick="servos.move('P', -10)">Right</button>
>> <button onclick="servos.move('T', -10)">Down</button>
>> <button onclick="servos.move('T', 10)">Up</button>
>> </div>
>> </body>
>> <script>
>> var servos;
>> $( document ).ready(function() {
>> servos = moveServos();
>> });
>> function moveServos() {
>> // Store some settings, adjust to suit
>> var panPos = 70,
>> tiltPos = 90,
>> tiltMax = 170,
>> tiltMin = 45,
>> panMax = 170,
>> panMin = 20;
>> return {
>> move:function(servo, adjustment) {
>> var value;
>> if(servo == 'P') {
>> if(!((panPos >= panMax && adjustment > 0) || (panPos <= panMin &&
>> adjustment < 0))) {
>> // Still within allowed range, "schedule" the movement
>> panPos += adjustment;
>> }
>> value = panPos + 'P';
>> }
>> else if(servo == 'T') {
>> if(!((tiltPos >= tiltMax && adjustment > 0) || (tiltPos <= tiltMin &&
>> adjustment < 0))) {
>> // Still within allowed range, "schedule" the movement
>> tiltPos += adjustment;
>> }
>> value = tiltPos + 'T';
>> }
>> // Use AJAX to actually move the servo
>> $.get('http://192.168.1.122:81/servos.rpy?value=' + value);
>> },
>> }
>> }
>> </script>
>> </html>
>>
>> *****
>> Twisted is started:  sudo twistd -n web -p 81 --path /usr/local/www/
>>
>> I would be forever grateful if someone could take a serious look at this
>> and tell me where I am going wrong. Once this is fixed, I can start
>> documenting the entire system for everyone. Thank you!
>>
>> Deve
>>
>> _______________________________________________
>> Twisted-web mailing list
>> Twisted-web at twistedmatrix.com
>> https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
>>
>>
>
> _______________________________________________
> Twisted-web mailing list
> Twisted-web at twistedmatrix.com
> https://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: </pipermail/twisted-web/attachments/20170827/616b95cf/attachment-0001.html>


More information about the Twisted-web mailing list