Включение CORS в пути .csv http в Apache2.4 для окон [дубликат]

subset() также полезен:

subset(DATAFRAME, COLUMNNAME == "")

Для пакета опроса, возможно, пакет survey уместен?

http: // faculty. washington.edu/tlumley/survey/

42
задан Devin Crossman 23 January 2013 в 00:01
поделиться

7 ответов

Так как в любом случае все было отправлено index.php, я думал, что попробую установить заголовки в PHP вместо файла .htaccess, и это сработало! УРА! Вот что я добавил к index.php для всех, у кого есть эта проблема.

// Allow from any origin
if (isset($_SERVER['HTTP_ORIGIN'])) {
    // should do a check here to match $_SERVER['HTTP_ORIGIN'] to a
    // whitelist of safe domains
    header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
    header('Access-Control-Allow-Credentials: true');
    header('Access-Control-Max-Age: 86400');    // cache for 1 day
}
// Access-Control headers are received during OPTIONS requests
if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
        header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");         

    if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
        header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

}

кредит идет на slashingweapon для ответа на этот вопрос

Я использую Slim Я добавил этот маршрут, чтобы запросы OPTIONS получали ответ HTTP 200

// return HTTP 200 for HTTP OPTIONS requests
$app->map('/:x+', function($x) {
    http_response_code(200);
})->via('OPTIONS');
67
ответ дан Devin Crossman 19 August 2018 в 05:19
поделиться
  • 1
    вы спасли жизнь – frazras 14 July 2015 в 22:34
  • 2
    вы спасли две жизни до сих пор. +1 – Vignesh 8 August 2015 в 10:45
  • 3
    спасибо, что вы спасли мою жизнь после поиска решения в течение нескольких дней – Kerisnarendra 1 September 2016 в 03:24
  • 4
    Вы сохраняете четыре жизни до сих пор, даже думали, что мне нужно только header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");. Спасибо ! – raph77777 10 October 2016 в 16:58
  • 5
    Пять жизней спасены! – Liam McArthur 14 March 2017 в 12:24

Благодаря Devin, я выяснил решение для моего приложения SLIM с поддержкой нескольких доменов.

В htaccess:

SetEnvIf Origin "http(s)?://(www\.)?(allowed.domain.one|allowed.domain.two)$" AccessControlAllowOrigin=$0$1
        Header set Access-Control-Allow-Origin %{AccessControlAllowOrigin}e env=AccessControlAllowOrigin
        Header set Access-Control-Allow-Credentials true

в index.php

 // Access-Control headers are received during OPTIONS requests
    if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
            header("Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS");         

        if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
            header("Access-Control-Allow-Headers: {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

    }
// instead of mapping:
$app->options('/(:x+)', function() use ($app) {
    //...return correct headers...
    $app->response->setStatus(200);
});
2
ответ дан abimelex 19 August 2018 в 05:19
поделиться

Как и в этом ответе Пользовательский заголовок HTTP для определенного файла , вы можете использовать <File>, чтобы включить CORS для одного файла с этим кодом:

<Files "index.php">
  Header set Access-Control-Allow-Origin "*"
  Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
</Files>
4
ответ дан Community 19 August 2018 в 05:19
поделиться

Должно ли .htaccess использовать add вместо set?

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
56
ответ дан markmarijnissen 19 August 2018 в 05:19
поделиться
  • 1
    Спасибо! это решило мою проблему! Я использовал set, и он не работал, меняя его с добавлением исправленного. Для чего это стоит, это было сделано в блоге Wordpress, с некоторыми другими вещами в файле .htaccess, а также – BBog 6 January 2014 в 21:40
  • 2
    Ах, человек. Я пробовал это с помощью "set & quot; в течение нескольких дней ... но только наткнулся на этот пост. Благодаря! – Andrew Newby 28 November 2015 в 10:23
  • 3
    В документации здесь говорится, что "set & quot; enable-cors.org/server_apache.html . Наверное, вызвало много проблем! – Ryan How 1 January 2017 в 14:02
  • 4
    Я изменил из набора, чтобы добавить и по-прежнему получаю ответ для предполета, имеет недопустимый код статуса HTTP. 400 ..pls предлагают .. описал мой полный пост здесь: magento.stackexchange.com/questions/170342/… – Sushivam 16 April 2017 в 06:02

Я попробовал решение @abimelex, но в Slim 3.0 сопоставление запросов OPTIONS выглядит следующим образом:

$app = new \Slim\App();
$app->options('/books/{id}', function ($request, $response, $args) {
    // Return response headers
});

https://www.slimframework.com/docs/objects/router. HTML # варианты маршрута

1
ответ дан Rocío García Luque 19 August 2018 в 05:19
поделиться

Похоже, вы используете старую версию slim (2.x). Вы можете просто добавить следующие строки в .htaccess и не нужно ничего делать в PHP-скриптах.

# Enable cross domain access control
SetEnvIf Origin "^http(s)?://(.+\.)?(domain_one\.com|domain_two\.net)$" REQUEST_ORIGIN=$0
Header always set Access-Control-Allow-Origin %{REQUEST_ORIGIN}e env=REQUEST_ORIGIN
Header always set Access-Control-Allow-Methods "GET, POST, PUT, DELETE"
Header always set Access-Control-Allow-Headers: Authorization

# Force to request 200 for options
RewriteEngine On
RewriteCond %{REQUEST_METHOD} OPTIONS
RewriteRule .* / [R=200,L]
4
ответ дан Santanu Brahma 19 August 2018 в 05:19
поделиться

Это то, что сработало для меня:

Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type"
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS"
10
ответ дан Shade 19 August 2018 в 05:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: