2016-01-22 104 views
1

你好我建立了我的離子應用程序,它的工作,在很多設備上,然後就在幾個小時前我試圖在我的手機上運行應用程序,我注意到由於某些原因,數據並未從我的Web服務器返回。於是,我就用ionic serve,看看有什麼是錯的我的電腦上運行的應用程序,我注意到了這個錯誤不停每次我試圖讓一個$ HTTP請求時彈出:離子奇怪'訪問控制允許來源'問題

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:8100' 

我的應用程序已經爲運行完美現在幾個星期,我不知道可能會改變什麼導致這種情況。我使用谷歌金絲雀進行開發,我禁用了網絡安全。但即使問題出在我的瀏覽器上,仍然無法解釋爲什麼該應用程序現在不適用於我的手機。我認爲這可能與新的android更新或某事有關。

我最近對我的電腦所做的唯一更改是卸載我的諾頓安全防病毒軟件,並安裝malwarebytes反惡意軟件和反利用。

我在我的服務器上安裝了laravel-cors。並設置在默認情況下是這樣設置:

<?php 

return [ 
    /* 
    |-------------------------------------------------------------------------- 
    | Laravel CORS 
    |-------------------------------------------------------------------------- 
    | 

    | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*') 
    | to accept any value, the allowed methods however have to be explicitly listed. 
    | 
    */ 
    'supportsCredentials' => false, 
    'allowedOrigins' => ['*'], 
    'allowedHeaders' => ['*'], 
    'allowedMethods' => ['GET', 'POST', 'PUT', 'DELETE'], 
    'exposedHeaders' => [], 
    'maxAge' => 0, 
    'hosts' => [], 
]; 

我現在不知道是怎麼回事,我使用的是聯想A6000 android手機的發展。 Android系統的webview版本是47.0.2526.100,android操作系統版本是5.0.2。

我剛剛安裝了應用程序的舊版諾基亞x「android手機」與4.1版的Android版本,它的工作原理。

讓我澄清,通過「不工作」我的意思是所有$ http請求,應用程序本身打開並正常工作。

+0

把這個添加到你的php文件中(在<?php之後),看看它是否有幫助 - (header('Access-Control-Allow-Origin:*');) – Tasos

+0

其實我使用laravel所以我有相當數量的.php文件,試圖將其添加到我的主要index.php文件中,並且api返回了500內部服務器錯誤。 – user3718908

+0

然後我不知道。我有確切的問題,由於使用IP地址,而不是我的服務器的域名,並且該行允許任何起源標題,但是,然後再次即時通訊不使用PHP框架 – Tasos

回答

0

好吧,我的問題就像我在我的文章中描述的那樣在一些設備上工作,而不是在某些設備上工作。我不知道爲什麼。

至於問題的原因,爲什麼這開始發生,我再也不知道爲什麼。

在試圖嘗試解決我用下面的默認設置安裝CORS問題:

<?php 

return [ 
    /* 
    |-------------------------------------------------------------------------- 
    | Laravel CORS 
    |-------------------------------------------------------------------------- 
    | 

    | allowedOrigins, allowedHeaders and allowedMethods can be set to array('*') 
    | to accept any value, the allowed methods however have to be explicitly listed. 
    | 
    */ 
    'supportsCredentials' => false, 
    'allowedOrigins' => ['*'], 
    'allowedHeaders' => ['*'], 
    'allowedMethods' => ['*'], 
    'exposedHeaders' => [], 
    'maxAge' => 0, 
    'hosts' => [], 
]; 

當以上沒有工作,我決定來檢查我的服務器,以確保我有模塊安裝,因爲我注意到「Access-Control-Allow-Origin」頭沒有被包含在我的服務器的響應頭中。

我接着就直接配置我的.htaccess文件中加入這樣的:

<IfModule mod_headers.c> 
    Header set Access-Control-Allow-Origin "*" 
    Header set Access-Control-Allow-Credentials false 
</IfModule> 

但是上面還是沒任何區別,至少不是直到我在註釋掉全球 CORS中間件我的Kernel.php文件。

它現在完美。 :)

0

作爲速戰速決,把普通的PHP頭在的index.php

header("Access-Control-Allow-Origin: *"); 
header("Access-Control-Allow-Credentials: true"); 
header("Access-Control-Allow-Headers: Origin, X-Requested-With, Content-Type, Accept, Key, Authorization"); 
header("Access-Control-Allow-Methods: POST, GET, OPTIONS, PUT, DELETE, PATCH"); 

這將與任何laravel版工作之初。然後找出laravel和laravel-cors軟件包版本,並以適當的方式修復此問題。

+0

當我這樣做,現在我只得到一個403禁止的錯誤,但我應該指出,我說它曾經與我的瀏覽器和我的手機一起工作,但即使它現在可能無法工作,現在它可以在其他設備上工作。 – user3718908

+0

明星*在某些情況下可能無法正常工作,請嘗試指定實際的域名。此外,使用郵遞員檢查實際的回覆,您可以發送與郵遞員完全相同的請求,就像您在設備上一樣。 – vitr

+0

真實域名?在這種情況下,由於直接從手機發出請求,實際的域名是什麼。 – user3718908