【问题标题】:Chromes security stops me from sending emails, would android also stop it?Chromes 的安全性阻止我发送电子邮件,android 也会阻止它吗?
【发布时间】:2017-09-08 22:27:35
【问题描述】:

我正在制作一个 Cordova 应用程序。我有一个电子邮件发送功能,当我在 chrome 中测试我的应用程序时,我收到以下错误:

请求的资源上不存在“Access-Control-Allow-Origin”标头。因此不允许访问 Origin 'null'。

我已经查看了堆栈溢出,但无法找到解决方案。我没有看到任何工作。有人说这个问题是chrome和其他浏览器特有的。如果当我在 android 上运行我的应用程序时只有浏览器出现问题,那么一切都应该没问题,并且应该发送电子邮件,对吗?如果你想看,下面是代码:

   var message = localStorage.getItem("Message");
var key = "xxthisisakeyxx";
var message_name = "send_message";
var data = {};
data.value1 = message;
data.value2 = localStorage.getItem("AdminsEmail");
var url = "https://example.com/trigger/" + message_name + "/with/key/" + key;
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == XMLHttpRequest.DONE) {
    if (xmlhttp.status == 200) {
    console.log("Message Sent");
    console.log(JSON.stringify(XMLHttpRequest));
    }
}
}

xmlhttp.open('POST', url, true);
xmlhttp.setRequestHeader( 'Access-Control-Allow-Origin', "http://localhost:8000");
xmlhttp.setRequestHeader( 'Content-Type', 'application/json' );
xmlhttp.responseType = 'json';
xmlhttp.send(new FormData(data));

谢谢

【问题讨论】:

  • @JaromandaX ...谢谢,但这只是chrome的问题吗?如果是手机上的应用,还会出现这个问题吗?
  • 我只指浏览器*,而不仅仅是 chrome。这个问题会出现在android上吗?
  • 不,不是 android 上的浏览​​器。当我在 android 上构建并运行它作为应用程序时,它会遇到同样的问题吗?
  • 哦,抱歉,完全误解了这个问题(我将删除我关于 CORS 的 cmets) - 抱歉,我对原生 android 应用了解不多,无法提供帮助

标签: javascript android cordova google-chrome email


【解决方案1】:

问题在于服务器端脚本的访问控制。

示例:如果您将数据发布到 php 脚本,您可能需要在 .php 文件的顶部包含这一行:

 header('Access-Control-Allow-Origin: *');  

这可能不安全,但如果您从 Cordova 应用程序内部发布数据,则可能很难指定确切的来源。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    • 2012-03-19
    • 2016-04-06
    • 2017-06-07
    • 1970-01-01
    • 2022-12-21
    相关资源
    最近更新 更多