【问题标题】:Posting JSON datas and get a response (Ajax)发布 JSON 数据并获得响应 (Ajax)
【发布时间】:2015-05-22 17:46:25
【问题描述】:

我一直在尝试Minecraft API的新认证系统 但我有一些问题!

我有这个代码:

    $(function() {
    $(" #submit ").click(function() {
        $("#res").remove();
        $("#loading").remove();
        $("body").append('<span id="loading">Loading...</span>');

        var user = $("#user").val();
        var pass = $("#pass").val();

        $.ajax({
            url:'https://authserver.mojang.com/authenticate',
            type: 'POST',
            contentType: 'application/json',
            data: '{"agent": {"name": "Minecraft", "version": 1}, "username": "' + user +'", "password": "' + pass +'"}',
            dataType: "jsonp",
            success: function(res) {
                $("#loading").remove();
                $("#res").remove();
                $("body").append('<div id="res">' + res + '</div>');
            }
            error: function() {
                $("#loading").remove();
                $("#res").remove();
                $("body").append('<div id="res">Error</div>');
            }
        });         
        return false;
    });
});

这对我不起作用,你能帮忙吗?

【问题讨论】:

  • 你能告诉我们你遇到了什么错误吗?
  • 无法发布 jsonp。试试json
  • 使用带有错误回调的参数 error:function(jqXHR, textStatus, errorThrown) { } 并向我们展示 errorThrown 参数中返回的内容。
  • 使用 json 我得到这个错误:XMLHttpRequest 无法加载 authserver.mojang.com/authenticate。请求的资源上不存在“Access-Control-Allow-Origin”标头。因此,Origin 'localhost' 不允许访问。响应的 HTTP 状态代码为 405。使用 jsonp 类似于:GET ->,然后是 user=&pass= 等的链接。
  • 试试 dataType: "json",正如@sal niro 已经说过的那样。

标签: jquery ajax json


【解决方案1】:

这是一个跨源浏览器问题。正如 cmets 中所指出的,您可能需要委派额外的资源来处理这些请求。使用 Fiddler 或 Postman 进行检查。得到一个很好的回应,403,显然,错误的信用......但要证明......

原始发布请求(粘贴到 Fiddler 原始作曲家)

POST https://authserver.mojang.com/authenticate HTTP/1.1
主机:authserver.mojang.com
内容长度:86

{ "agent": { "name": "Minecraft", "version": 1 }, "username": "US", "password": "PW" }

响应

{"error":"ForbiddenOperationException","errorMessage":"无效 证书。用户名或密码无效。"}

【讨论】:

  • 你能帮忙吗?我什至不知道从哪里开始,我只知道标准要求。我要补充什么?
  • 假设你有一个服务器端后端,在那里发出一个请求。当您收到该请求时,请使用您用于重新发出请求的任何堆栈对其进行转换。得到响应,返回给您的客户。只是一个额外的步骤。不确定您使用的是什么技术,但无论您采取什么路线,都应该有可用的 api。
  • 这里有更多信息wiki.vg/Authentication,但这似乎是唯一的方法
  • 您是否像我指出的那样通过 Fiddler 发出请求?将 Fiddler 视为您需要创建的服务器。向服务器发出 ajax js 调用,然后将其中继到 mojang => 返回客户端。
  • 我刚下载了 Fiddler,你能帮我看看 tw 或类似的吗?
猜你喜欢
  • 2018-03-27
  • 1970-01-01
  • 2012-02-22
  • 1970-01-01
  • 2011-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-08
相关资源
最近更新 更多