当前位置: 首页 > 面试题库 >

jQuery跨域POST恶作剧

欧阳俊晖
2023-03-14
问题内容

我正在尝试向API进行身份验证,该API仅允许您使用带有JSON的POST作为表单数据进行身份验证,格式为{“ username”:“
myusername”,“ password”:“ mypassword”}。

我已经尝试了两天,以使其与jQuery一起使用,但是由于它是跨域的,所以我遇到了问题。我该怎么做?

错误信息:

Request Method:OPTIONS
Status Code:405 METHOD NOT ALLOWED

到目前为止的代码:

var username = "myusername";
var password = "mypass"
var authurl = "https://myurl";

$.ajax
({
    type: "POST",
    url: authurl,
    dataType: 'json',
    contentType: "application/json; charset=utf-8",
    async: false,
    data: {'json':'{"username":"' + username + '", "password":"' + password + '"}'},
    success: function (result) {
        $('#json').html(result);
    }
})

总结一下:

  • API仅接受POST进行身份验证
  • API需要使用json作为表单数据,例如:{“ username”:“ myusername”,“ password”:“ mypassword”}
  • js来自其他域,导致跨域错误

非常感谢您的帮助 :)


问题答案:

您应该遵循不同的模式。您的本地JS会将ajax发布到本地URL,该URL将接受JSON数据的POST方法

此时,您的服务器代码将对适当的数据执行HTTP POST到远程服务器,获取响应,然后将其发送回调用js。



 类似资料:
  • 问题内容: 我对带有HTTP授权标头的CORS请求有疑问: 在我看来,Web浏览器未通过POST请求发送Authorization标头,是否有解决方法? 这是我的Angular代码: 在服务器端,我在web.config中有这个 问题答案: 您使用不正确。第二个参数是您需要发送到服务器的 数据 ,您不能设置这样的标头。在您的情况下,它将把 整个对象 作为 JSON有效负载 发送 __ 试试这个:

  • 问题内容: 这是两个页面,test.php和testserver.php。 test.php testserver.php 现在我的问题是:当这两个文件都在同一服务器上(本地主机或Web服务器)时,它可以工作并被调用;如果它在不同的服务器上,则意味着Web服务器上的testserver.php和localhost上的test.php,它不起作用,并且正在执行。即使ajax内的URL更改为http:

  • 问题内容: 似乎已经在stackoverflow上讨论过类似的内容,但是我找不到完全一样的东西。 我正在尝试发送带有CORS(跨源资源共享)的Cookie,但无法正常工作。 这是我的代码。 我在请求HEADER中看不到此Cookie。 问题答案: 您无法通过JavaScript在CORS请求上设置或读取Cookie。尽管CORS允许跨域请求,但cookie仍然受浏览器的同源策略约束,这意味着只有来

  • 本文向大家介绍Jsonp post 跨域方案,包括了Jsonp post 跨域方案的使用技巧和注意事项,需要的朋友参考一下 近期在项目中遇到这样一问题,关于jsonp跨域问题,get传值是可以的,但post传值死活不行啊,于是网上看了一大堆关于这方面的资料,最终问题得以解决,今天抽空与大家分享下。 说明: http://www.t1.com/index.php 服务端URL 当然这是我本地配置的,

  • 问题内容: 这是两个页面,test.php和testserver.php。 test.php testserver.php 现在我的问题是:当这两个文件都在同一服务器上(本地主机或Web服务器)时,它可以工作并被调用;如果它在不同的服务器上,则意味着Web服务器上的testserver.php和localhost上的test.php,它不起作用,并且正在执行。即使ajax内的URL更改为http:

  • 问题内容: 我看到了一些使用Ajax进行跨域的示例,但是它不起作用。 我尝试使用chrome并给出以下错误: 问题答案: 您无法使用,因为它会进行ajax调用,该调用将是跨源的,因此被Same Origin Policy 阻止,并且您尝试访问的Twitter API不支持跨源资源共享(或者如果它支持,允许,它不允许原点或,这是我尝试过的)。 该API确实支持JSONP(这不是真正的Ajax调用),