我可以使用 basecamp api 文档中描述的 curl 方法轻松地从 bash shell 创建消息。但是,我的应用程序不是用 php 编写的,所以我希望能够通过基本的 ajax 帖子访问 basecamp 服务器。不幸的是,我似乎无法将 curl 语句翻译成 ajax 帖子。我虽然这就足够了:
function callBasecamp() {
var parameters = {
user:"[my_basecamp_username]",
pass:"[my_basecamp_password]",
userAgent: '[my_app] (my_email)',
contentType: 'application/json; charset=utf-8',
data: ({ "subject": "This is a Test Message", "content": "This is test content. Please disregard if notified." }),
};
var data = JSON.stringify(parameters);
$.ajax({
type: "POST",
data: data,
dataType: 'json',
url: "../../../../site_media/proxy.php?url=https://basecamp.com/[account_id#]/api/v1/projects/[project#]/messages.json?" + data,
traditional: true,
success: function(data){
console.log(data);
}
});
}
但是尽管我的开发服务器返回了 HTTP 200 216 响应,但 basecamp 并没有创建消息,而且我没有看到任何返回的数据。我正在使用 php 代理来规避 django csrf 问题:
proxy.php
<?php
// File Name: proxy.php
if (!isset($_POST['url'])) die();
$url = urldecode($_POST['url']);
$url = 'https://' . str_replace('https://', '', $url); // Avoid accessing the file system
echo file_get_contents($url);
关于我的困难可能在哪里的任何想法?