流明:启用 CORS

2024-04-16

我使用 Lumen 构建了一个 API,并希望使用 JavaScript 和 XMLHttpRequest 对象访问它。但每次我的 PUT、GET、POST 和 DELETE 请求都会转化为选项 - 请求。我看了很多网站都有CORS的信息。我构建了包含以下内容的中间件:

class CORSMiddleware
{
    public function handle($request, \Closure $next)
    {
      $response = null;
      /* Preflight handle */
      if ($request->isMethod('OPTIONS')) {
         $response = new Response();
      } else {
         $response = $next($request);
      }

      $response->header('Access-Control-Allow-Methods', 'OPTIONS, HEAD, GET, POST, PUT, DELETE');
      $response->header('Access-Control-Allow-Headers', $request->header('Access-Control-Request-Headers'));
      $response->header('Access-Control-Allow-Origin', '*');
      return $response;
    }
}

我的客户代码:

var url = "http://localhost:8000/api/user";
var xmlHttpRequest = new XMLHttpRequest();
xmlHttpRequest.open('PUT', url, false);
xmlHttpRequest.send('{"username": "ABC", "password": "ABC","email": "[email protected] /cdn-cgi/l/email-protection" }');
if (xmlHttpRequest.status == 200) {
  console.log(xmlHttpRequest.responseText);
}

我的GET请求的请求信息:

Host: localhost:8000
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Origin: null
Connection: keep-alive
Cache-Control: max-age=0

我的 GET 请求的响应信息:

Access-Control-Allow-Methods: OPTIONS, HEAD, GET, POST, PUT, DELETE
Access-Control-Allow-Origin: *
Cache-Control: no-cache
Connection: close
Content-Type: text/html; charset=UTF-8
Date: Sun, 27 Dec 2015 10:36:51 GMT
Host: localhost:8000
x-powered-by: PHP/7.0.0

我的PUT请求的请求信息:

Host: localhost:8000
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:43.0) Gecko/20100101 Firefox/43.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: de,en-US;q=0.7,en;q=0.3
Accept-Encoding: gzip, deflate
Access-Control-Request-Method: PUT
Origin: null
Connection: keep-alive
Cache-Control: max-age=0

我的PUT请求的响应信息:

Cache-Control: no-cache
Connection: close
Content-Type: text/html; charset=UTF-8
Date: Sun, 27 Dec 2015 10:36:51 GMT
Host: localhost:8000
x-powered-by: PHP/7.0.0

在预检中,没有“Access-Control-Allow-*”标头。我不知道为什么;我用我的 lumen-cors-middleware 启用了它。


将以下标头添加到 public/.htaccess 文件中。

Header set Access-Control-Allow-Origin "*" 
Header set  Access-Control-Allow-Methods "GET,POST,PUT,DELETE,OPTIONS"
Header set Access-Control-Allow-Credentials "true"

这可以很好地解决跨源问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

流明:启用 CORS 的相关文章

随机推荐

  • Oracle SQL 查询中的表需要排序逻辑

    我有一个订单ORDER 1从MFG 1并前往PORT B 订单通过不同的地点移动 并在某些地点之间进行处理和维护 在此示例中 它分为 7 批货物 如果货物在同一地点停留数天 则运输模式为 处理 目标数据 https i stack imgu
  • 无法使用 Python 连接器和外部浏览器身份验证器连接到 Snowflake

    我正在尝试使用 Python 连接器和 SSO 连接到 Snowflake 我希望连接器打开浏览器来验证用户身份 但这不起作用 h Code bin gt python conn py Initiating login request wi
  • 根据匹配条件对 SQL 记录进行排序

    我有这样的疑问 SELECT FROM table WHERE key LIKE 1 2 3 OR key LIKE 1 2 OR key LIKE 1 是否可以根据首先匹配的条件对该查询返回的记录进行排序 我想获取所有匹配的记录key L
  • 是否可以“提示”字典键?

    In PyCharm 代码完成 https www jetbrains com help pycharm auto completing code html gt 基本完成 gt 调用基本完成 gt 字典 我发现 如果您将字典硬编码为某些值
  • 如何在 AngularJS 中使用按键事件?

    我想捕获下面文本框中的回车键按下事件 为了更清楚地说明我正在使用ng repeat填充 tbody 这是 HTML td td
  • decltype(some_vector)::size_type 不能用作模板参数

    以下类无法编译 template
  • 是否可以配置 Eclipse 以突出显示 XML 中的 Java 语法?

    我正在为一个产品进行编程 该产品包含嵌入较大 XML 文件中的 Java 实际上是 BeanShell 代码片段 这些是在运行时动态执行的 整个文档的各个级别可以有多个这些代码标签
  • 基于 C# .NET 文档的应用程序操作图

    我想开发一个新的应用程序 用户可以在其中创建描述流程的图表 我认为在这种情况下 基于文档的应用程序是我唯一的选择 我熟悉C net C MFC 和J2EE 根据您的经验 实现这一目标的最佳方法是什么 我应该关注哪个平台 图表必须由方框和箭头
  • java 文件名中带有美元符号和数字 .class (name$1.class) 是什么意思? [复制]

    这个问题在这里已经有答案了 当我编译我的java Enum Day时 它生成他的Day class文件和8个Day class文件 所以我想知道为什么编译器生成8个 class而不是7个 因为我有7个枚举常量 但是8 个覆盖注释 我知道 D
  • Google Play 定时发布

    在 Google Play 上使用 定时发布 更新应用程序时 上传 APK 后 是否应该选择 立即发布到生产环境 选项 这会将新的 APK 提交到生产环境吗 还是 Google Play 会直接处理它并等待我点击 上线 Google 或其他
  • Laravel 5 - 如何在视图中访问存储中上传的图像?

    我已将用户的头像上传到 Laravel 存储中 我如何访问它们并将它们呈现在视图中 服务器将所有请求指向 public 那么如果他们在的话我该如何向他们展示 storage folder The best方法是创建一个符号链接就像 Slat
  • bin目录和PATH

    我是编程初学者 有人可以解释一下 用简单的话 程序的 bin 目录中有什么吗 这是什么PATHwindows的环境变量 它是如何工作的 请不要以为我不会使用Google 我只是想更清楚地理解它 通常将程序的所有二进制文件放在 bin 目录中
  • CakePHP 总是让我退出

    最近我制作了三个蛋糕应用程序 这三个应用程序都有这个问题 配置大部分是库存的 我使用它作为会话选项 Configure write Session array defaults gt php cookie gt test 经过大量谷歌搜索后
  • 通过在 datagridviewcolum 中指定 DefaultCellStyle.Format 值来显示百分比

    With datagridview Columns PricePerUnit ValueType Type GetType System Decimal DefaultCellStyle Format C End With 数据表绑定到 d
  • 从数据库中检索图像

    我正在开发一个显示员工列表的项目 此处将显示该员工的信息和照片 我的项目现在可以在列表框中显示员工列表 当我双击员工时 他 她的个人资料将显示在文本框中 我的问题是我无法让他们的照片显示在picturebox 我已经将他们的照片以及他们的
  • 绘制 dr4pl 剂量反应曲线,以及如何将它们与 ggplot2 集成?

    我正在尝试建立一种高通量方法来绘制大型筛选实验的剂量反应曲线 Prism 显然有最简单的方法可以很好地绘制剂量反应曲线 但我无法复制和粘贴这么多数据 自从 CRAN 被移除后drc 包dr4pl似乎是可行的方法 但目前可用的指导还很少 ma
  • 在python中解压嵌套的zip文件

    我正在寻找一种在 python 中解压缩嵌套 zip 文件的方法 例如 考虑以下结构 为方便起见 使用假设名称 Folder ZipfileA zip 压缩文件A1 zip 压缩文件A2 zip ZipfileB zip 压缩文件B1 zi
  • 在 C 中将整数转换为二进制

    我正在尝试将整数 10 转换为二进制数 1010 此代码尝试执行此操作 但我在 strcat 上遇到段错误 int int to bin int k char bin bin char malloc sizeof char while k
  • 为多面图中的单个面板添加几何图层

    从以下链接中获取提示使用 ggplot2 对齐两个图 http rwiki sciviews org doku php id tips graphics ggplot2 aligntwoplots 我能够根据共同的 x 轴绘制 2 个 y
  • 流明:启用 CORS

    我使用 Lumen 构建了一个 API 并希望使用 JavaScript 和 XMLHttpRequest 对象访问它 但每次我的 PUT GET POST 和 DELETE 请求都会转化为选项 请求 我看了很多网站都有CORS的信息 我构