【问题标题】:POST data to JSON service from PHP从 PHP POST 数据到 JSON 服务
【发布时间】:2014-09-22 08:39:01
【问题描述】:

我最近一直在尝试使用 JSON 回复。因此,作为一个测试,我创建了一个小服务来验证另一个域上的用户。这是我最初测试的要点:

在域 A 上,我有一个 php 文件,当使用特定的 GET 变量 (URI) 调用该文件时,它将向调用者返回一个 JSON 字符串。我的想法是我发送用户并传递并返回一个带有变量的 json 字符串,该变量表示它是否已成功登录,如果是用户数据,则为错误消息。

然后我在域 B 中创建了一个带有 javascript 和表单的页面。在表单提交时,javascript 使用 XHR (HTMLRequest) 调用域 A 中的页面,检索 JSON 字符串,将其转换为对象,并根据结果声明登录与否。

这行得通。

重新考虑这一点后,我意识到对于某些服务,这可以正常工作,但登录时却不能,因为客户随后会声称在域 B 中的站点'嘿,我已经以用户 C 的身份使用域 A 登录,所以你可以相信我' - 你真的不应该相信客户。

所以我做了一点改动,现在域 B 中的页面提交用户并传递给域 B,域 B(PHP 中的服务器端)使用 file_get_contents 从域 A 获取 JSON 字符串并根据它做出决定用户现在是否登录。

这也有效,并且在我看来要好得多。

但是现在我处于第 3 阶段 - 即使服务器进行身份验证,我仍在发送用户并通过 URI 传递到域 A。我希望将其作为 POST(或 OPTIONS)发送 - 就像不在 URI 中一样- PHP 到 PHP,最好是组合编码字符串 - 例如 MD5('user:'.$user.':pass:'.$pass) 或类似的东西。

创建 MD5 的字符串很容易,但是我如何通过 PHP POST 然后检索 POST 的结果作为字符串在 PHP 中处理?

【问题讨论】:

  • @CBroe 在我的搜索中错过了那个 - 需要测试那些以查看它们是否在我的场景中工作 - 虽然在那个问题中没有被接受的答案(可能是为什么我首先错过了它 - 很好的收获) - +1 引导我找到可能的答案
  • @CBroe 感谢您的链接 - dbau 的回答效果很好 - 再次感谢

标签: php json post


【解决方案1】:

我建议您编写 PHP 代码,假设所有传入的 JSON 数据都编码为 UTF-8,因为这是规范中的默认值,当然也是大多数 JSON 编解码器中的默认值。

最好在您的 API 文档中明确指出 UTF-8 被假定为 application/json 内容。如果客户端想要传输不同编码的 JSON,请指示他们传递指定非默认编码的不同 Content-Type 标头,标头如下:Content-Type: application/json;charset=UTF-16

【讨论】:

  • 这与我的问题无关,因为我询问了如何通过 POST 而不是 GET 发送。至于您的观点,服务页面使用的是 UTF-8,不会使用其他任何内容。它不以 JSON 形式接收数据 - 仅回答 JSON - 尽管它可能也应该以 JSON 形式获取请求(或代替当前状态) - 即使不回答问题本身也很好 - 谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-17
  • 2015-05-27
  • 2020-04-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多