我的 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 函数帮助我查明了确切的问题。不过,这个错误并没有给我任何更多的信息,所以我不知道还能求助于什么。
我发现它是经过编码的。只有特定字符串起作用的原因是它意外地能够绕过安全性。
导入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' }
这是兰巴表达式中的固定代码,能够对其进行解码。