我最近在JSON回复中进行了实验。因此,作为测试,我创建了一个小型服务,用于在另一个域上对用户进行认证。这是我最初测试的要点:
在域A上,我有一个php文件,当使用特定的GET变量(URI)调用时,它会向调用者返回一个JSON字符串。我的想法是我发送用户并传递并返回一个json字符串,其中包含一个变量,表示已成功登录,用户数据为大小写,错误消息为大小写。
然后我在域B中创建了一个带有javascript和表单的页面。在表单提交时,javascript使用XHR(HTMLRequest)来调用域A中的页面,检索JSON字符串,将其转换为对象并根据结果声明登录与否。
这很有效。
重新考虑这一点后,我意识到某些服务的效果很好,但是登录时它并没有,因为客户会在域B中声明网站,嘿我已经使用域名登录了作为用户C,你可以相信我' - 你真的不应该相信客户。
所以我改变了一点,现在域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?
答案 0 :(得分:1)
我建议您编写PHP代码,假设所有传入的JSON
数据都编码为UTF-8
,因为这是规范中的默认值,当然是大多数{{ 1}}编解码器。
尽管在API文档中明确指出JSON
内容UTF-8
,但这是一个好主意。如果客户端想要以不同方式传输JSON,请指示它们传递指定非默认编码的不同Content-Type标头,并使用如下标头:application/json
Content-Type: application/json;