我正在尝试对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);
}
})
答案 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脚本自己的服务器等。