当前位置: 首页 > 面试题库 >

在.htaccess中启用cors

万高洁
2023-03-14
问题内容

我已经使用SLIM
PHP框架创建了一个基本的RESTful服务,现在我正尝试将其连接起来,以便可以从Angular.js项目访问该服务。我已经了解到Angular开箱即用地支持CORS,而我要做的就是Header set Access-Control-Allow-Origin "*"在我的.htaccess文件中添加以下行:

我已经做到了,我的REST应用程序仍然可以正常工作(.htaccess错误导致500个内部服务器没有错误),但是当我尝试从test-
cors.org
测试它时,它抛出了错误。

Fired XHR event: loadstart
Fired XHR event: readystatechange
Fired XHR event: error

XHR status: 0
XHR status text: 
Fired XHR event: loadend

我的.htaccess文件如下所示

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ /index.php [QSA,L]
Header set Access-Control-Allow-Origin "*"
Header set Access-Control-Allow-Methods: "GET,POST,OPTIONS,DELETE,PUT"

我还需要添加其他东西到.htaccess中才能使其正常工作,还是有另一种方法可以在服务器上启用CORS?


问题答案:

因为无论如何我都将所有内容转发到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']}");

}

因为我使用的是Slim,所以我添加了此路由,以便OPTIONS请求获得HTTP 200响应

// return HTTP 200 for HTTP OPTIONS requests
$app->map('/:x+', function($x) {
    http_response_code(200);
})->via('OPTIONS');


 类似资料:
  • 问题内容: 我正在在线测试一个网站。 目前,错误尚未显示(但我知道它们存在)。 我只能访问该文件。 如何使用文件显示所有错误? 我在文件中添加了以下几行: 现在 页面显示: 内部服务器错误 问题答案: .htaccess:

  • 我正面临一个严重的问题。我克隆的Wordpress安装中的Permalinks不起作用。例如,如果我有一个类别“cars”,我希望链接看起来像mysite.com/category/cars。原始版本是在不同的服务器上,而不是我正在工作。我更改了数据库中“siteurl”和“home”的值,以及wp-config.php文件中“wp_home”和“wp_siteurl”的值。数据库凭据是正确的(一

  • 问题内容: 我正在尝试使CakePHP应用程序正常工作。为此,我建立了一个全新的Debian安装程序,更新了配置并将所有内容放在/ var / www中,其内容如下: .htaccess文件包含以下内容: 如果我访问我的虚拟主机(http:// myhost / ),则会看到正确的页面。但是,即使加载了JavaScript也会失败(它位于中): 因此,我的 问题是 :CakePHP需要什么正确的.

  • 问题内容: 我试着把这2行 在我的根.htaccess文件中,但这给我带来“内部服务器错误”消息… php5正在服务器上运行, 我无权访问php.ini,因此我认为htaccess是我唯一的机会。 你能告诉我哪里错了吗? 提前致谢 问题答案: 是正确的。 您将必须与您的托管服务商联系-有些不允许您更改php.ini中的值

  • 我知道了。htaccess阻止所有用户代理,只允许一个我需要的 允许cloudflare访问如何允许不使用(Mozilla)这就是我得到的用户代理 Mozilla/5.0(兼容;cloudflare AlwaysOnline/1.0;http://www.cloudflare.com/always-online)

  • 如何在Spring5WebFlux项目中启用CORS? 我找不到合适的留档。