标签: zend-expressive

PHP/Apache2响应中缺少CORS头

我公司正在开发的Zend Expressive项目已准备好发货,但在我们的暂存环境中,我们似乎缺少CORS飞行前请求的响应标头.这在我们的开发环境中不会发生.我们在我们的管道中使用CorsMiddleware,但它看起来并不像中间件是罪魁祸首.

问题

在运行时,中间件检测传入的飞行前请求,它将回复如下响应:

HTTP/1.1 200 OK
Date: Mon, 20 Aug 2018 15:09:03 GMT
Server: Apache
X-Powered-By: PHP/7.1.19
Access-Control-Allow-Origin: https://example.com
Vary: Origin
Access-Control-Allow-Headers: content-type
Keep-Alive: timeout=5, max=100
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

嗯,这只适用于我们的开发服务器和php的内置Web服务器.响应与我们的登台服务器不同,即使请求完全相同,除了主机:

HTTP/1.1 200 OK
Date: Mon, 20 Aug 2018 15:11:29 GMT
Server: Apache
Keep-Alive: timeout=5, max=100
Cache-Control: max-age=0, no-cache
Content-Length: 0
Content-Type: text/html; charset=UTF-8
Run Code Online (Sandbox Code Playgroud)

我们尝试过的

调查中间件

我们已经验证CorsMiddleware运行完美,实际上设置了所需的标题.当我们修改CorsMiddleware的响应代码,并将其设置202的,而不是200我们现在做的也得到了我们正在寻找的头.更改响应代码200使标题再次消失.

手动设置标头

使用以下示例:

header('Access-Control-Allow-Origin: https://example.com');
header('Access-Control-Allow-Headers: content-type');
header('Vary: Origin');
exit(0); …
Run Code Online (Sandbox Code Playgroud)

php apache response-headers zend-expressive

11
推荐指数
1
解决办法
775
查看次数

我应该学习zf2使用zend表达

对于那些已经开始玩zend表达的人来说,它需要知道zend框架2吗?我是否必须学习/了解zf2才能使用表达?还是他们做了足够的改变,学习zf2会毫无意义/混乱?

沿着这些相同的行,除了zend-expressive.readthedocs.org页面,任何人都可以推荐一些好的教程/ 演练来开始吗?

php middleware zend-framework2 zend-expressive

5
推荐指数
1
解决办法
691
查看次数

如何使用ZF3设置延迟加载(从任何地方都没有ServiceLocator模式)

我正在写一个新的ZF2应用程序.我注意到ZF3已经弃用了"从任何地方"调用服务的ServiceLocator使用模式.我想为ZF3编写代码.

我能够设置我的Controller在构造函数时调用所有依赖项.但这意味着Doctrine在我需要它之前加载ie 对象.

如何设置它以便仅在我需要它时立即加载?(延迟加载).我知道ZF3将加载移动到Controller构造,这使得如何加载Just-In-Time的东西并不明显.

旧代码

class CommissionRepository
{

    protected $em;

    function getRepository()
    {
        //Initialize Doctrine ONLY when getRepository is called
        //it is not always called, and Doctrine is not always set up
        if (! $this->em)
            $this->em = $this->serviceLocator->get('doctrine');
        return $this->em;
    }
}
Run Code Online (Sandbox Code Playgroud)

重构ServiceLocator模式后的当前代码

class CommissionRepository
{

    protected $em;

    function getRepository()
    {
        return $this->em;
    }

    function setRepository($em)
    {
        $this->em = $em;
    }

    function useRepository($id)
    {
        return $this->em->find($id);
    }
}


class CommissionControllerFactory implements FactoryInterface
{

    public function createService(ServiceLocatorInterface $serviceLocator) …
Run Code Online (Sandbox Code Playgroud)

deprecated service-locator zend-framework2 zend-framework3 zend-expressive

4
推荐指数
1
解决办法
1936
查看次数

什么是Zend Expressive和Zend MVC?

我正在用PHP开始一个新项目,并希望选择最新的ZendFramework.我看到Zend Framework 3已经发布,所以我想从Zend Framework 3开始.但是当我进入Zend 的INSTALL页面时,他们给出了Zend MVC和Zend表达的选项.

我阅读了它们,并了解到Expressive是一个微框架,而MVC是一个全栈框架.除此之外,我对它们并不十分清楚.

我看到Zend MVC也适用于ZF2,文档说MVC是一个层.虽然我找不到Expressive for zf2.

题:

  1. 是Zend MVC还是Zend Expressive包?并且是zf3的一部分?
  2. 当我看到在Zend的MVC和Zend表现已安装的软件包,我没有看到一个包的Zend框架,但我看到的Zend组件单独包装,如zend-http,zend-json等,所以在这些(表现力和MVC)只是建在不同的Zend组件?
  3. 我怎么知道我在使用ZF3?

php zend-framework zend-framework2 zend-framework3 zend-expressive

-1
推荐指数
1
解决办法
1157
查看次数