unitywebrequest 仅在某些输入时失败

问题描述 投票:0回答:1

我的 unitywebrequest 仅当我在其中放入一定数量的字符时才起作用,否则我会收到错误 HTTP/1.1 500 Internal Server Error。

例如:

using UnityWebRequest www = UnityWebRequest.Post(website, "{ \"body\": \"loginUser=fjkixrx&loginPass=secretpassword&thirdoption=example data\"}");

这会起作用,但是这个:

using UnityWebRequest www = UnityWebRequest.Post(website, "{ \"body\": \"loginUser=different&loginPass=secretpassword&thirdoption=example data\"}");

不起作用。我发现 loginUser 需要正好有 7 个字符,但我无法理解如何实现。我将其发送到 lambda 函数。在 lambda 函数中,我可以用测试中的任何内容更改它,并且它可以工作。为什么只有某些事情才有效?我从哪里开始寻找解决方案?

我认为它没有用,但这是我的

lambda_handler()
功能。

import json

def lambda_handler(event, context):
    """Extract form data from the POST request"""
    print("Received third option data:")
    form_data = parse_form_data(event)
 
    # Process the form data (you can customize this part based on your needs)
    if 'loginUser' in form_data and 'loginPass' in form_data:
        login_user = form_data['loginUser']
        login_pass = form_data['loginPass']
        print(f"Received login credentials - User: {login_user}, Password: {login_pass}")
 
    if 'thirdoption' in form_data:
        third_option = form_data['thirdoption']
        print(f"Received third option data: {third_option}")
 
 
    # Return a response
    return {
         'statusCode': 200,
         'body': json.dumps({'message': 'Form data received successfully'})
     }
 
def parse_form_data(event):
    """Parse form data from the event object"""
    form_data = {}
    if 'body' in event:
        body = event['body']
        form_data = {k: v for k, v in [param.split('=') for param in body.split('&')]}
    return form_data

输入神奇的数字并简化 lambda 函数帮助我查明了确切的问题。不过,这个错误并没有给我任何更多的信息,所以我不知道还能求助于什么。

post networking aws-lambda unitywebrequest
1个回答
0
投票

我发现它是经过编码的。只有特定字符串起作用的原因是它意外地能够绕过安全性。

导入base64导入urllib.parse

def lambda_handler(事件,上下文): # 解码base64编码的body if event.get('isBase64Encoded'): demod_body = base64.b64decode(event['body']).decode('utf-8') 别的: 解码的_body = 事件['body']

# Parse the form data
form_data = urllib.parse.parse_qs(decoded_body)

# Extract loginUser and loginPass
login_user = form_data.get('loginUser', [None])[0]
login_pass = form_data.get('loginPass', [None])[0]

# Your logic here
print(f'User: {login_user}, Pass: {login_pass}')

# Return a response
return {
    'statusCode': 200,
    'body': f'User {login_user} logged in successfully'
}

这是兰巴表达式中的固定代码,能够对其进行解码。

© www.soinside.com 2019 - 2024. All rights reserved.