在哪里放JS

时间:2015-01-02 09:15:39

标签: javascript json forms forms-authentication

我正在为基于Web的系统编写后端,目前正在命令行上使用curl进行测试。我对网页设计知之甚少,所以一旦服务成型,我将在以后外包这一层。

与此同时,我确实想做一个小概念验证,即网站可以充当中间(前端)层。

后端(用python / bottle编写)以JSON格式接收数据(并以类似的格式回复),所以我可以做到

$> POSTING="-X POST -H Content-Type:application/json -u user:password"
$> curl $POSTING -d @input.json https://backend.server/path/to/function

我想尝试使用基于Web的界面而不是卷曲的一些函数,所以我在python中使用preppy模板编写了一个简单的处理程序,它抛出了一个表单,例如:

<form action="https://backend.server/path/to/function" method="post">
Enter Something <input name="fieldname" type="text" />
</form>

这个表单实际上是由一个在&#34;前端&#34;上运行的简单python / bottle / preppy程序生成的。服务器,例如:https://frontend.server/testform

表单操作指向我在curl中使用的相同路径,但这有一些缺点,因为后端系统没有意识到正在使用的前端系统,所以没有重新 - 指向下一步。

我可以让表单在前端服务器上处理,重新打包请求并将其作为JSON转发到后端服务器,处理来自后端的响应,并为客户端格式化它。这是有道理的,因为前端可以做一些增值(通过不是无状态,例如它可以添加智能逻辑(后端提供了一个非常简单的接口)。

因此,作为一个主要的学术问题,并且因为我确信在任何情况下我都需要知道如何执行此操作,所以我开始研究如何使用JavaScript将表单数据作为JSON提交。

我发现This answer对我来说似乎不错,但它在HTML文档中的位置是什么?我想在<script>部分的<head>标签之间,但是脚本如何知道何时执行 - 我可能在一个页面上有多个表单:那么它如何知道要附加到哪个表单?基本上这个答案我想知道它是如何工作的?

如何更改它以便能够处理其他HTTP方法,例如PUT或DELETE?

我还有另一个与Authentication头有关的问题,因为我希望在后端处理身份验证和授权。 &#34;前端&#34;可以由不受信任的第三方拥有,所以我该如何处理?

我目前的想法是用户将签署请求,JSON请求可能如下所示:

{
  "FINGERPRINT": "xxxxxxxxxxxxxxx",
  "REQUESTSIGNATURE": "xxxxxxxxxxxxxxxxxxxxxx",
  "SUBJECT": "URL.....",
  "REQUEST": {
    "Field1": "Field1-value",
    "Field2": "Field2 value"
   }
}

在这种情况下,表单字段被打包到&#34; REQUEST&#34;主JSON文档的字段,仅为该部分生成签名。客户端必须使用JSON包,因为中间层必须无法访问用户的私钥。

由于JSON文档的请求部分未加密,并且由于HTTP身份验证位于请求数据之外,因此我可以为每个用户使用预先存储的公钥来对请求进行身份验证。中间层可以读取请求,但依赖于后端来验证签名。这个问题的唯一问题是如何让客户端(浏览器)为新用户存储公钥,而无需先将其交给不受信任的中间层。但这可能是一个单独的问题?

0 个答案:

没有答案