0

我正在尝试对 API 进行身份验证,该 API 仅允许您使用带有 JSON 作为表单数据的 POST 进行身份验证,格式为

{"username":"myusername","password":"mypassword"}

我已经尝试了三天来让它与 jQuery 一起工作,但我遇到了问题,因为它是跨域的。我怎样才能做到这一点?

错误信息:

"NetworkError: 405 Method Not Allowed

我的代码:

var username = "myusername";
var password = "mypass"
var authurl = "https://myurl";

$.ajax
({
    type: "POST",
    url: authurl,
    dataType: 'json',
    contentType: "application/json",
    async: false,
    data: {'json':'{"username":"' + username + '", "password":"' + password + '"}'},
    success: function (result) {
        $('#json').html(result);
    }
})

4

2 回答 2

1

我有同样的问题,但我用dataType:jsonp它对我有用。这是jQuery Docs以获取更多详细信息

$.ajax
({
    type: "POST",
    url: authurl,
    dataType: 'jsonp',
    context: document.body,
    async: false,
    data: {'json':'{"username":"' + username + '", "password":"' + password + '"}'},
    success: function (result) {
        $('#json').html(result);
    }
})
于 2012-07-23T07:25:03.933 回答
0

由于同源策略,通常不可能向另一个域执行异步 POST 请求。

JSONP 之所以有效,是因为您可以<script>在 DOM 中插入标签,并且它们可以指向任何地方并且不使用 XMLHttpRequest (ajax)。

如果您尝试使用的 API 支持 JSONP,这将是一个选项,否则您可能必须研究使用 PHP 的解决方案,以使用 Curl 之类的方式发布数据,然后使用 Ajax 在您自己的服务器上调用该 PHP 脚本等.

于 2012-07-23T07:37:59.333 回答