2016-02-24 104 views
0

我是新來的這個,我想登錄並獲得令牌,所以離子和laravel可以溝通。我在laravel上使用衛星和jwt。上郵遞員,我得到令牌回來:離子laravel XMLHttpRequest無法加載

這是我從離子獲得登錄電子: [在這裏輸入的形象描述] [2]

錯誤說:

的XMLHttpRequest不能加載http://localhost:8000/api/authenticate。對預檢請求的響應不會通過訪問控制檢查:請求的資源上不存在「訪問控制 - 允許來源」標頭。因此不允許訪問原產地'http://localhost:8100'。

和是的,我laravel側,我已經包括

標題( 「訪問控制允許來源:*」);

缺少什麼我在這裏,謝謝大家

+0

圖書館[Laravel 5中的CORS](https://github.com/barryvdh/laravel-cors)解決了OP的問題,正如他在回答中提到的那樣,當我試圖編輯它時,審查隊列被刪除。 – TylerH

回答

0

有很多因素,爲什麼出現這種情況。錯誤可能會發生,因爲您沒有訪問標題,瀏覽器會獲取該標題並阻止您的請求。

當您的服務器遇到像500,403,401等內部錯誤時,您也可能會在您的laravel應用中爲請求生命週期添加標頭(如在中間件中過濾所有api請求),但有時會出現錯誤500或甚至echo或dd()會中斷整個請求生命週期,並返回瀏覽器無法通過ajax調用解釋的錯誤,因此它會丟失隱式添加的標題,從而導致瀏覽器返回到預檢請求錯誤。

我建議的唯一解決方案是在代碼中正確的錯誤處理,並在響應中返回錯誤並以json格式返回。

public function someController extends Controller{ 
    public function Foo(Request $request){ 
    $input_bag = [ 
      'some input' => first_$input, 
      'another important input' => $second_input,     
     ]; 

     $i = 0; 
     foreach ($input_bag as $key => $value) { 
      $value = trim($value); 

      if (empty($value)) { 
       $error_bag[$i] = "$key empty"; 
       $i++; 
      } else { 
       // 
      } 
     } 
     //filter of false or null values 
     if (array_filter($error_bag)) { 
      return response()->json($error_bag, 400); 
     } 


    } 

這將在運行代碼時返回錯誤的json響應。並且充分利用嘗試捕獲並返回適當的響應可以使您的調試生活變得輕鬆。