jQuery跨域POST在php-slim框架中不起作用



我正在尝试对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);
    }
})

我也有同样的问题,但我使用了dataType:jsonp,它对我有效。以下是jQuery文档了解更多详细信息

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

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

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

如果您尝试使用的API支持JSONP,这将是一种选择,否则您可能需要研究一种解决方案,使用PHP发布类似Curl的数据,然后使用Ajax在您自己的服务器等上调用该PHP脚本。

相关内容

  • 没有找到相关文章

最新更新