我正在编写RESTful Web服务,在成功/不成功的操作中返回自定义/现有HTTP标头。
例如,如果验证失败,将发送401 HTTP标头等
我通过PHP header()函数发送了标题,但当然不会将其发送回调用者。我真正需要做的是通过Apache而不是PHP将标头发送回调用脚本。我正在对我在webservice中收到的数据进行某些检查,然后发送标题。我将如何通过Apache推送这些头文件呢?
谢谢!
答案 0 :(得分:1)
我可能会用PHP而不是Apache来做这件事,但这只是我自己的偏好。如果对header()
的调用不起作用,可能是因为在调用header()
之前,某些地方有PHP空格以外的空格。请在PHP manual:
请记住,必须调用header() 在发送任何实际输出之前, 通过普通的HTML标签,空白 文件中的行,或来自PHP。它是一个 用于读取代码的常见错误 include(),或require(),函数或 另一个文件访问功能,并有 输出的空格或空行 在调用header()之前。相同 使用单个时存在问题 PHP / HTML文件。
如果必须使用Apache执行此操作,mod_headers似乎不适合。 mod_headers只能根据请求是否成功(2xx)或任何请求的条件设置标头。请参阅Header directive。
相反,我认为可以通过使用mod_rewrite和mod_asis的组合来完成。我没有特定的“配方”,但想法是检查请求是否已获得mod_rewrite授权,如果未经授权,请将请求URI重写/重定向到包含您要发回的标题信息。
答案 1 :(得分:1)
我已经通过PHP发送了标题 header()函数,但当然 不会被发送回来电。
是什么让你这么肯定?我倾向于认为你在某个地方做错了什么......
答案 2 :(得分:0)
找出解决方案。传递'true'作为header()的第二个参数,并将实际状态代码作为第三个参数传递。例如,标题('HTTP 1.1 / 400 Bad Request',true,400)。这将强制400状态代码给调用者。我在LiveHTTPHeaders中至少检查过这个,所以它可能会起作用。我只需要通过卷曲来调用它就可以完全确定。