jQuery跨域POST不能在php slim框架中工作

时间:2012-07-23 07:19:39

标签: jquery json rest post cross-domain

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

2 个答案:

答案 0 :(得分: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);
    }
})

答案 1 :(得分:0)

由于源策略相同,通常无法对另一个域执行异步POST请求。

JSONP只能运行,因为您可以将<script>标签插入DOM,它们可以指向任何地方,不使用XMLHttpRequest(ajax)。

如果您尝试使用的API支持JSONP,那么您可能需要使用PHP来查找使用Curl之类的数据发布数据的解决方案,然后使用Ajax在您的上调用该PHP脚本自己的服务器等。