FineUploader - JSON 响应错误 - "Response does not include the base64 encoded policy!"
FineUploader - Error with JSON Response - "Response does not include the base64 encoded policy!"
我正在尝试在 asp.NET MVC5 应用程序中使用 FineUploader。当我尝试使用 FineUploader 上传文件时,在我的控制器中,我对策略文档进行 Base64 编码,对 base 64 编码文档进行签名,然后根据文档将结果作为 JSON 对象返回。但是,我在控制器 returns JSON:
之后的页面上收到以下错误
"Response does not include the base64 encoded policy!"
我的 JSON 负载的格式一定有问题。这里是代码的相关部分:
byte[] byteArrayPolicy = System.Text.Encoding.UTF8.GetBytes(jsonStringFull);
string base64Policy = Convert.ToBase64String(byteArrayPolicy);
var signature = kha.ComputeHash(Encoding.UTF8.GetBytes(base64Policy));
var signatureString = ToHexString(signature, true);
string payloadString = @"{ ""policy"":""" + base64Policy + @"""," + @"""signature"":""" + signatureString + @"""}";
JsonResult jsonRequest = Json(payloadString);
return jsonRequest;
我返回的 JSON 对象的格式有什么问题吗?该政策是我从 FineUploader 收到的政策的精确副本,只是它经过了 Base64 编码。签名是一个十六进制字符串。以下是有效负载的示例:
"{ \"policy\":\"eyJleH...=\",\"signature\":\"da186a017b038382e2cc21dfa4f1fbf806c51adf92984a9b95f1aa845aeb72e4\"}"
请注意,Base64 策略中的“...”是为了简洁起见。
我得到的错误是响应不包含 Base64 编码策略,但在我看来它确实包含 Base64 编码策略。有没有可能我的签名不正确?在我将签名计算为字节数组后,它不应该转换为十六进制字符串吗?
根据Chrome:
,这是实际有效载荷
"{ \"policy\":\"eyJleHBpcmF0aW9uIjoiMjAxNi0wNC0xNFQxNDo0MzozMS4zOTZaIiwiY29uZGl0aW9ucyI6W3siYWNsIjoicHJpdmF0ZSJ9LHsiYnVja2V0IjoiZnVuZHRoZWZ1bmVyYWwifSx7IkNvbnRlbnQtVHlwZSI6ImltYWdlL2pwZWcifSx7InN1Y2Nlc3NfYWN0aW9uX3N0YXR1cyI6IjIwMCJ9LHsieC1hbXotYWxnb3JpdGhtIjoiQVdTNC1ITUFDLVNIQTI1NiJ9LHsia2V5IjoiNGZkOGIzMDMtMmQ3Zi00MWJlLThiYWItYzUyMjBiNmRlMjQ1LmpwZyJ9LHsieC1hbXotY3JlZGVudGlhbCI6IkFLSUFKUkhDU09STExFUkpVMkVBLzIwMTYwNDE0L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSx7IngtYW16LWRhdGUiOiIyMDE2MDQxNFQxNDM4MzFaIn0seyJ4LWFtei1tZXRhLXFxZmlsZW5hbWUiOiIyMDE2LTAzLTI0LmpwZyJ9XX0=\",\"signature\":\"c592b3bca0dedba10301e06df37760cb527ac0a83112ae9b668dce00f0b23465\"}"
错误确实出现在您的代码中。正如您在回答中所说明的那样,响应负载是这样的:
"{...}"
但应该是这样的:
{...}
在 运行 你的 通过 JSON.parse
响应后,结果是一个字符串而不是一个对象。
我正在尝试在 asp.NET MVC5 应用程序中使用 FineUploader。当我尝试使用 FineUploader 上传文件时,在我的控制器中,我对策略文档进行 Base64 编码,对 base 64 编码文档进行签名,然后根据文档将结果作为 JSON 对象返回。但是,我在控制器 returns JSON:
之后的页面上收到以下错误"Response does not include the base64 encoded policy!"
我的 JSON 负载的格式一定有问题。这里是代码的相关部分:
byte[] byteArrayPolicy = System.Text.Encoding.UTF8.GetBytes(jsonStringFull);
string base64Policy = Convert.ToBase64String(byteArrayPolicy);
var signature = kha.ComputeHash(Encoding.UTF8.GetBytes(base64Policy));
var signatureString = ToHexString(signature, true);
string payloadString = @"{ ""policy"":""" + base64Policy + @"""," + @"""signature"":""" + signatureString + @"""}";
JsonResult jsonRequest = Json(payloadString);
return jsonRequest;
我返回的 JSON 对象的格式有什么问题吗?该政策是我从 FineUploader 收到的政策的精确副本,只是它经过了 Base64 编码。签名是一个十六进制字符串。以下是有效负载的示例:
"{ \"policy\":\"eyJleH...=\",\"signature\":\"da186a017b038382e2cc21dfa4f1fbf806c51adf92984a9b95f1aa845aeb72e4\"}"
请注意,Base64 策略中的“...”是为了简洁起见。
我得到的错误是响应不包含 Base64 编码策略,但在我看来它确实包含 Base64 编码策略。有没有可能我的签名不正确?在我将签名计算为字节数组后,它不应该转换为十六进制字符串吗?
根据Chrome:
,这是实际有效载荷"{ \"policy\":\"eyJleHBpcmF0aW9uIjoiMjAxNi0wNC0xNFQxNDo0MzozMS4zOTZaIiwiY29uZGl0aW9ucyI6W3siYWNsIjoicHJpdmF0ZSJ9LHsiYnVja2V0IjoiZnVuZHRoZWZ1bmVyYWwifSx7IkNvbnRlbnQtVHlwZSI6ImltYWdlL2pwZWcifSx7InN1Y2Nlc3NfYWN0aW9uX3N0YXR1cyI6IjIwMCJ9LHsieC1hbXotYWxnb3JpdGhtIjoiQVdTNC1ITUFDLVNIQTI1NiJ9LHsia2V5IjoiNGZkOGIzMDMtMmQ3Zi00MWJlLThiYWItYzUyMjBiNmRlMjQ1LmpwZyJ9LHsieC1hbXotY3JlZGVudGlhbCI6IkFLSUFKUkhDU09STExFUkpVMkVBLzIwMTYwNDE0L3VzLWVhc3QtMS9zMy9hd3M0X3JlcXVlc3QifSx7IngtYW16LWRhdGUiOiIyMDE2MDQxNFQxNDM4MzFaIn0seyJ4LWFtei1tZXRhLXFxZmlsZW5hbWUiOiIyMDE2LTAzLTI0LmpwZyJ9XX0=\",\"signature\":\"c592b3bca0dedba10301e06df37760cb527ac0a83112ae9b668dce00f0b23465\"}"
错误确实出现在您的代码中。正如您在回答中所说明的那样,响应负载是这样的:
"{...}"
但应该是这样的:
{...}
在 运行 你的 通过 JSON.parse
响应后,结果是一个字符串而不是一个对象。