在这里,我尝试使用Medium API从我的 WordPress 前端表单在我的Medium个人资料上创建新帖子。
jQuery(document).ready(function ($) {
function get_tinymce_content(){
if (jQuery("#wp-mediumcontenteditor-wrap").hasClass("tmce-active")){
return tinyMCE.activeEditor.getContent();
}else{
return jQuery('#mediumcontenteditor').val();
}
}
function formToJSON() {
return JSON.stringify({
"title": $('#m_title').val(),
"contentFormat": 'html',
"content": get_tinymce_content(),
"tags": ["football", "sport", "Liverpool"],
"publishStatus": 'public'
});
}
// Perform AJAX
$('form#medium').on('submit', function(e){
$('p.status', this).show().text(ajax_magic_kuira.loadingmessage);
ctrl = $(this);
$.ajax({
xhrFields: {
withCredentials: true
},
type: 'POST',
url: 'https://api.medium.com/v1/users/xxxuserID/posts',
dataType: 'json',
crossDomain: true,
contentType: "application/json; charset=utf-8",
data: formToJSON(),
beforeSend: function (xhr) {
xhr.setRequestHeader ("Authorization", "Bearer xxxxToken");
},
headers: {
"Access-Control-Allow-Headers": 'Origin',
'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE',
'Access-Control-Allow-Credentials': true,
'Access-Control-Allow-Origin': 'http://demopress.xyz' // my domain where I make the ajax request.
},
success: function(data, textStatus, jqXHR){
alert('Successfully Request Send!!');
},
error: function(jqXHR, textStatus, errorThrown){
alert('Sorry -- Error');
}
});
e.preventDefault();
return false;
});
});
但无法通过 ajax 发送数据。每次我收到错误时提交我的表单后Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://api.medium.com/v1/users/xxxuserID/posts. (Reason: CORS header ‘Access-Control-Allow-Origin’ missing).
我尝试了我在网上找到的所有解决方案,但还没有运气。这是我试图解决这个问题的一些解决方案。
- https://www.html5rocks.com/en/tutorials/cors/
- https://stackoverflow.com/a/3506306/3967385
- https://zinoui.com/blog/cross-domain-ajax-request
- http://www.ajax-cross-origin.com/
- ETC
当我通过 REST API 将这些解决方案用于GET
(从服务器检索数据)数据时,它可以正常工作并且GET
无需使用任何技巧即可工作。意味着如果我想从另一个域检索数据,它工作正常,但是当我使用POST/PUT
方法创建或发送新数据到另一台服务器时,它不工作并重放同样的错误。
注意:我可以通过使用成功发送数据,
php
但我不想在这里使用 php 和核心 javascript。我只想使用 jQuery/ajax 完成这项任务。
这是我的问题:
- 可以仅使用带有 REST API 的 jquery/ajax 发布另一台服务器(就像我想在我的中型个人资料上创建一个新帖子)
- 如果可能,那怎么办?请与 REST API 分享至少一个示例