gpt4 book ai didi

javascript - 在 Openshift 上使用 Angular 和 PHP 时出现跨域脚本错误

转载 作者:行者123 更新时间:2023-11-29 21:42:46 25 4
gpt4 key购买 nike

我在整个网络上进行了搜索,在其他 stackoverflow 线程中找到了各种答案,尝试了所有答案,但无法让我的答案工作。场景:

  • 在客户端使用 Angular 并使用 http-get 请求
  • 在 Openshift 主机上运行的 MySQL 数据库旁边的服务器端使用 PHP。

Angular 代码:

var app = angular.module("myapp", []).config(function ($httpProvider) {
//Enable cross domain calls
$httpProvider.defaults.useXDomain = true;
delete $httpProvider.defaults.headers.common['X-Requested-With'];
});

app.controller("Circle", function ($scope, $http)
{
$scope.Bijstand = function (Verdiep) {
$http.get(url + "?function=getMetingen&Verdieping="+Verdiep)
.success(function (Result) {
console.log(Result);
});
}
});

PHP 代码:

header("Access-Control-Allow-Origin: 'http://localhost:54700'")
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET, POST");
header("Access-Control-Allow-Headers: X-Requested-With");

$servername = getenv('OPENSHIFT_MYSQL_DB_HOST').":".getenv('OPENSHIFT_MYSQL_DB_PORT');
$username = getenv('OPENSHIFT_MYSQL_DB_USERNAME');
$password = getenv('OPENSHIFT_MYSQL_DB_PASSWORD');
$dbname = getenv('OPENSHIFT_GEAR_NAME');

// Create connection
$con = $con = mysql_connect($servername, $username, $password);
// Check connection
if (!$con) {
die("Connection failed: " . mysql_error());
}
mysql_select_db($dbname,$con);

当从 Angular 向 php 发出 http-get 请求时,出现以下错误:

SEC7120 : Origin of 'http://localhost:54700' not found in Access -Control- Allow -Origin header .

SCRIPT7002 : XMLHttpRequest : Network error 0x80700013 , Can not complete this operation by mistake 80700013 .

SERVER ERROR - The server has detected an unexpected error that the request can not be completed.( XHR ) : GET - " getString "

我已经看到了各种尝试解决此问题的方法,并且我已经尝试了所有这些方法,但没有任何效果。请帮我调试这个。仅供引用:我不关心数据库或数据的安全性。存储的信息根本不敏感,因此不要在“隐私”问题上犹豫不决。谢谢

最佳答案

这可能不是一个完整的答案,但 HTTP 响应只能有一个 Access-Control-Allow-Origin 值。

例如,another SO Question讨论使用多个 ACAO 字段时的问题。

在单个字段中列出值也不起作用。 The W3C Spec说:

Rather than allowing a space-separated list of origins, it is either a single origin or the string "null".

使用“*”(星号)作为值并不总是有效,请参阅 W3C 规范了解更多详细信息。

因此,返回的唯一安全值是 ' http://localhost:54700 '.

最后,Chrome 在本地主机上支持 CORS 方面存在问题,请参阅 this Question了解更多详情。几个月前我上次学习CORS的时候,这个问题还存在。

关于javascript - 在 Openshift 上使用 Angular 和 PHP 时出现跨域脚本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34363863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com