【发布时间】:2023-04-07 15:47:01
【问题描述】:
我们的客户正在将文件发送给第三方并由他们存储。第三方收到文档后,会将 xml 数据发送到我们提供给他们的 url(例如https://example.com/Documents/receive)。我们的第三方要求我们向他们发送回复,说我们收到了他们的请求。我们创建了一个供应商库并将其自动加载到我们的应用程序中。出于某种原因,当我们伪造来自第 3 方的请求时,我们会被重定向回我们的登录页面,就好像什么都没发生一样。这是我们的控制器。
class DocumentsController extends AppController {
public function beforeFilter(Event $event) {
parent::beforeFilter($event);
$this->Security->config('unlockedActions', ['receive']);
$this->Auth->allowedActions = (['receive']);
}
public function receive()
{
$this->request->allowMethod(['post']);
$this->autoRender = false;
$doc = new \Document\Document(false);
$doc->set_user_name("username");
$doc->set_user_password("password");
$xml = $this->request->data['xml'];
try {
if($doc->parse_inbound_message($xml)) {
$parsed = $doc->getContent();
$file = new File('files/playground/test_file.xml', true, 0644);
$file->open();
//$file->write(print_r($parsed, true));
$file->write('Hey, I parsed!');
$file->close();
} else {
$file = new File('files/playground/test_file.xml', true, 0644);
$file->open();
$file->write('we got a false');
$file->close();
}
} catch(\Document\DocumentException $e){
$file = new File('files/playground/test_file.xml', true, 0644);
$file->open();
$file->write($e->getMessage());
$file->close();
}
}
}
【问题讨论】:
标签: php xml cakephp-3.0