JavaScript-API请求(访问控制允许源错误)
负责API请求的人已经离开了一周,所以在服务器端什么也做不了JavaScript-API请求(访问控制允许源错误),javascript,php,json,api,fetch,Javascript,Php,Json,Api,Fetch,负责API请求的人已经离开了一周,所以在服务器端什么也做不了 fetch("https://url.com/api/login/", { method: "post", headers: { // 'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded' }, body: JSON.stringify({ use
fetch("https://url.com/api/login/", {
method: "post",
headers: {
// 'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded'
},
body: JSON.stringify({
username: "test@mail.com",
password: "123"
})
}).then(function (response) {
return response.json();
}).then(function (myJson) {
console.log(myJson);
});
它适用于Postman,但正如我所听说的,Postman不遵循与浏览器相同的安全性,因此这不是Postman的问题。但我怀疑情况是否如此,因为作者的php解决方案运行良好
这是一个有效的php解决方案示例(由他编写):
我的代码中缺少什么?我怎样才能使它像他的php解决方案一样工作。(没有php方面的经验)
非常感谢您的帮助
编辑:
对邮递员起作用的是:
- 正文中的原始json格式
- 在
x-www-form-urlencoded
感谢您的回复,我将很快检查这些选项。顺便说一句,我的解决方案是否正确,这意味着这是服务器端问题/或者必须在同一个域上?浏览器会阻止请求,因为API的域与javascript运行的域不同。在服务器上添加允许原点行时。服务器告诉浏览器(在响应头中)允许您的javascript域。是的,这是服务器端。
function login($username, $password) {
$curl = curl_init(); curl_setopt_array($curl, array(
CURLOPT_URL => "https://url.com/api/login/",
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => false,
CURLOPT_TIMEOUT => 30,
CURLOPT_MAXREDIRS => 10,
CURLOPT_POSTFIELDS => "username=".$username."&password=".$password,
CURLOPT_HTTPHEADER => array(
"cache-control: no-cache",
"content-type: application/x-www-form-urlencoded"),
));
$response = curl_exec($curl);
curl_close($curl);
$authdata = json_decode($response);
if ($authdata -> success) {
//success
return true;
} else {
//fail
return false;
}
}