簡體   English   中英

在Openshift上使用Angular和PHP的跨域腳本錯誤

[英]Cross-Domain Scripting Error using Angular and PHP on Openshift

我在網上搜索了所有內容,在其他stackoverflow線程中找到了各種答案,全部嘗試了一下,但無法正常工作。 場景:

  • 在客戶端使用angular並使用http-get請求
  • 在OpenShift主機上運行的MySQL數據庫旁邊的服務器端使用PHP。

角度代碼:

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提供一個值。

例如, 另一個SO問題討論了使用多個ACAO字段時的問題。

在單個字段中列出值也不起作用。 W3C規范說:

它不是單個空格或字符串“ null”,而不是用空格分隔的起源列表。

使用“ *”(星號)作為值將不會總是起作用,有關更多詳細信息,請參見W3C規范。

因此,唯一返回的安全值是“ http:// localhost:54700 ”。

最后,Chrome在本地主機上支持CORS時遇到了問題,請參閱此問題以獲取更多詳細信息。 幾個月前,當我上次學習CORS時,這個問題仍然存在。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM