subset()
также полезен:
subset(DATAFRAME, COLUMNNAME == "")
Для пакета опроса, возможно, пакет survey
уместен?
Так как в любом случае все было отправлено 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');
Благодаря 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);
});
Как и в этом ответе Пользовательский заголовок HTTP для определенного файла , вы можете использовать <File>
, чтобы включить CORS для одного файла с этим кодом:
<Files "index.php">
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
</Files>
Должно ли .htaccess
использовать add
вместо set
?
Header add Access-Control-Allow-Origin "*"
Header add Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"
set
, и он не работал, меняя его с добавлением исправленного. Для чего это стоит, это было сделано в блоге Wordpress, с некоторыми другими вещами в файле .htaccess, а также
– BBog
6 January 2014 в 21:40
Я попробовал решение @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 # варианты маршрута
Похоже, вы используете старую версию 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]
Это то, что сработало для меня:
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"
header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
. Спасибо ! – raph77777 10 October 2016 в 16:58