簡體   English   中英

Slim Framework和Ember.js中的Access-Control-Origin

[英]Access-Control-Origin within Slim Framework and Ember.js

在閱讀了很多問題/答案后,我決定發帖。 我認為Slim Framework - jQuery $ .ajax請求 - Access-Control-Allow-Methods不允許使用方法DELETE來匯總我找到並嘗試過的大部分信息。

我正在使用MAMP和PHP 5.6進行開發,但生產環境很可能是共享主機。 我也在使用ember.js

當ember執行POST請求時,我得到Access-Cross-Origin消息:

XMLHttpRequest無法加載http://foo.bar/ 請求的資源上不存在“Access-Control-Allow-Origin”標頭。 因此不允許來源' http:// localhost:4200 '訪問。

我知道在服務器上設置適當的標頭可以解決問題,但我不知道何時這樣做。 我目前在Slim框架中做的是:

header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type');
header('Access-Control-Allow-Methods: GET, PUT, POST, DELETE, OPTIONS');

$app->options('/(:name+)', function() use($app) {                  
    $response = $app->response();
    $app->response()->status(200);
    $response->header('Access-Control-Allow-Origin', '*'); 
    $response->header('Access-Control-Allow-Headers', 'Content-Type, X-Requested-With, X-authentication, X-client');
    $response->header('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, OPTIONS');
 });

但是,我檢查了Ember.js請求,它沒有請求OPTIONS ,因此沒有設置正確的標頭。

如果我在Slim的單個路徑中設置標題,那么它可以正常工作。 但我不想一個接一個地在每條路線上設置標題。

如何設置所有路由的標頭?

CorsSlim是你的朋友:

<?php
$app = new \Slim\Slim();
$corsOptions = array(
    "origin" => "*",
    "exposeHeaders" => array("Content-Type", "X-Requested-With", "X-authentication", "X-client"),
    "allowMethods" => array('GET', 'POST', 'PUT', 'DELETE', 'OPTIONS')
);
$cors = new \CorsSlim\CorsSlim($corsOptions);

$app->add($cors);

您可以這樣做,而不是向項目添加新包

$app->add(function ($req, $res, $next) {
    $response = $next($req, $res);
    return $response
            ->withHeader('Access-Control-Allow-Origin', 'http://mysite')
            ->withHeader('Access-Control-Allow-Headers', 'X-Requested-With, Content-Type, Accept, Origin, Authorization')
            ->withHeader('Access-Control-Allow-Methods', 'GET, POST, PUT, DELETE, PATCH, OPTIONS');
}); 

https://www.slimframework.com/docs/v3/cookbook/enable-cors.html

暫無
暫無

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

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