【问题标题】:https not working with Javascript Fetch APIhttps 不适用于 Javascript Fetch API
【发布时间】:2020-08-25 14:54:20
【问题描述】:

我一直在为我的 nativescript 应用程序使用带有 fetch API 的 http 并且它一直在工作,我的网址是 http://saved-proficiencies.000webhostapp.com/

现在我必须将网址更改为 https://www.mirrackle.com/

我遇到的问题是,每当我使用 https://www.mirrackle.com/ 时,都会出现此错误 -

网络请求失败。

当我使用http://www.mirrackle.com 时,它说页面已永久移动到https://www.mirrackle.com/

这是我的代码

var url = "https://www.mirrackle.com/backend/login.php?email=" + 
    encodeURIComponent(this.get("email")) + "&password=" + 
    encodeURIComponent(this.get("password"));
fetch(url).then((response) => response.text()).then((res) => {
  alert(res);
}).catch((e) => {
  console.log(e);
});

【问题讨论】:

  • 我不乐意通过 GET 发送未加密的用户 ID 和密码

标签: javascript android nativescript


【解决方案1】:

我不认识编码 URIComponent 模式。 如果 json 不起作用,则 new FormData();无论如何可能是一个更好的选择。

const url = "https://www.mirrackle.com/backend/login.php";
const data = {email:this.get("email"), password:this.get("password")};
const jsonData = JSON.stringify(data);
const options = {
    method:"POST",
    body: jsonData
}
fetch(url,options)
    .then(response=> response.json())
    .then(response=> alert(response))
    .catch(e=>console.log(e));

【讨论】:

  • 你好,我试过了,谢谢。我仍然收到“网络请求失败”错误...这可能与我的托管公司有关吗?因为我的其他应用程序不这样做 - 我为他们使用了不同的托管公司
  • 访问从源“null”在“mirrackle.com/backend/login.php”获取已被 CORS 策略阻止:请求的资源上不存在“Access-Control-Allow-Origin”标头。如果不透明的响应满足您的需求,请将请求的模式设置为“no-cors”以获取禁用 CORS 的资源。这是我收到的响应错误。如果我深入研究。它看起来像一个跨起源问题。我还没有处理过。
  • 谢谢,我添加了 header("Access-Control-Allow-Origin: *");还是不行...我以前的托管公司从来没有给我这个问题,也许我会回到他们那里
  • 因此,如果您是从自己的前端而不是另一个前端访问后端,如果您有不同的测试环境,请确保它在实时环境中不起作用?阅读失败的提取...(最后我记得有一些方法可以在“提取”甚至离开之前出现该错误)。
猜你喜欢
  • 1970-01-01
  • 2015-11-30
  • 2013-04-29
  • 1970-01-01
  • 1970-01-01
  • 2017-09-21
  • 1970-01-01
  • 2013-02-27
  • 2021-05-29
相关资源
最近更新 更多