Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/81.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在HTTP请求中包含应导致域更改的标头字段_Javascript_Html_Rest_Http_Api Design - Fatal编程技术网

Javascript 在HTTP请求中包含应导致域更改的标头字段

Javascript 在HTTP请求中包含应导致域更改的标头字段,javascript,html,rest,http,api-design,Javascript,Html,Rest,Http,Api Design,我有一个API,它根据头字段对请求进行身份验证,然后返回一个HTML页面 必须以某种方式请求此API,域将从domain1.com更改为domain2.com(就像单击超文本一样) 我无法使用链接,因为我需要添加标题字段。 不能使用ajax,因为它不会将控件从domain1.com更改为domain2.com 像这样的事情根本没有意义 $.ajax({ // Use ajax to authenticate ... success : function(path){ // Lo

我有一个API,它根据头字段对请求进行身份验证,然后返回一个HTML页面

必须以某种方式请求此API,域将从
domain1.com
更改为
domain2.com
(就像单击超文本一样)

我无法使用
链接
,因为我需要添加标题字段。 不能使用
ajax
,因为它不会将控件从
domain1.com
更改为
domain2.com

像这样的事情根本没有意义

$.ajax({
 // Use ajax to authenticate
 ...
 success : function(path){

     // Load the path for domain change
     location.assign(path);      
     // Even this request should have a header field
 },
 ...    
})
我需要在一个请求中同时具备这两种功能(更改域和标头使用情况)——如果可能,或者至少在两个请求中


有什么想法吗?

为了发送HTTP请求,并在发送成功时发送带有凭证的标头和“更改域”,您可以将JSON响应与
302
代码和
位置一起使用,这只是一种约定,不会触发浏览器行为

答复的一个例子是:

HTTP response code: 200 OK

HTTP response body:
{
  status: 302,
  location: 'domain2.com/result'
}
Ajax代码如下所示:

$.ajax({
  // Use ajax to authenticate, with credential in HTTP header
  ...
  success: function(result){
    if (result.status === 302) {
      window.location = result.location;
    }
  },
  ...    
})

将使用2个HTTP请求。一个用于Ajax,另一个用于重定向。

你说的“域将改变”是什么意思?那句话毫无意义。在哪里换?你只是在寻找重定向吗?这和AJAX有什么关系?你在找
302重定向吗?@Brad当我们点击
somewebsite.com
URL
将更改为somewebsite.com-这就是我所说的域更改。我需要ajax来设置标题字段。@shaochuancs 302没有帮助。。。因为它服务于来自不同URL的请求,但不会将浏览器窗口的URL(要清除)更改为重定向。我说的对吗?URL将更改。。。你是说地址栏上的URL?不,302将更改该URL。你应该试试看。这里的重定向不会改变窗口的URL。它只在重定向的URL上为我的请求提供服务。因此,我可以从重定向的URL获取HTML并将其插入我的页面。但是,我想转到重定向页面。我该怎么做?我不能使用没有标题的普通location.assign()。@samkirubaharan很抱歉我犯了一个错误。我对另一种情况感到困惑。答案已经更新。请检查。你在哪里可以这样处理?。对我来说,浏览器会自动重定向。我只能处理那个重定向呼叫的响应,而不能处理这个初始呼叫。@samkirubaharan请注意HTTP响应代码是
200
,而不是
302
。我已经更新了我的答案。现在,问题是新的
窗口。location
将没有标题字段。我的请求需要标题字段。我在代码中明确提到了这一点。