最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Angular, Not able to change Referer Header - Stack Overflow

programmeradmin1浏览0评论

I am accessing a third party service through the HttpClient of Angular.
Before writing the code I made some test with Postman , if could access this third party service. And I notice that i have to set Referer to name of domain of the third pary in order to get a successful response from the third party. So in order to get a successful response I should tell the third party that this request is originating from a specific url.

The problem is that i cannot set the Referer header from angular. Is it possible to set the Referer Header from angular? How can i achieve to modify the Referer Header? I have simplified the code by removing the business logic. Below is what i am trying to do to achieve this.

    var serviceUrl = "";
    let httpOptions = {
      headers: new HttpHeaders({
        'Referer': ''
      })
    };
    let formData = new FormData();
    formData.append("x","z");
    formData.append("y","z");


    this.httpClient.post(serviceUrl,formData,httpOptions).subscribe(response => {
      console.log(response);
    });

I am accessing a third party service through the HttpClient of Angular.
Before writing the code I made some test with Postman , if could access this third party service. And I notice that i have to set Referer to name of domain of the third pary in order to get a successful response from the third party. So in order to get a successful response I should tell the third party that this request is originating from a specific url.

The problem is that i cannot set the Referer header from angular. Is it possible to set the Referer Header from angular? How can i achieve to modify the Referer Header? I have simplified the code by removing the business logic. Below is what i am trying to do to achieve this.

    var serviceUrl = "https://xxx.yyy.zzz";
    let httpOptions = {
      headers: new HttpHeaders({
        'Referer': 'https://xx.yyy.xx'
      })
    };
    let formData = new FormData();
    formData.append("x","z");
    formData.append("y","z");


    this.httpClient.post(serviceUrl,formData,httpOptions).subscribe(response => {
      console.log(response);
    });
Share Improve this question asked Feb 24, 2020 at 14:07 user12827457user12827457
Add a ment  | 

3 Answers 3

Reset to default 2

Is it possible to set the Referer Header from angular?

No. Referer is a forbidden header name (in the context of setting a request header from JS).

It would be a major security problem is it was possible.

I wan't able to change the referer header from angular by specifying the header in the the httpclient request.

But I found a workaround that solves perfectly my problem. I installed the chrome extension : ModHeader (link -> https://chrome.google./webstore/detail/modheader/idgpnmonknjnojddfkpgkljpfnnfcklj).

After installation of extension is finished . I have specified the request header that i want to add. And also I have specified the filter for which requests uri are the header going to be add. Below is the image of plugin. You just need to configure the filter uri that you want to add those headers.

That is because the browser of the user of your angular app will not allow to change the referer header. If you want to change it to an arbitrary value you would need to have access to a browser plugin or another kind of application installed on their machine.

Most modern browsers support the referrer-policy which will allow you to hide the referer header but changing it is not possible.

发布评论

评论列表(0)

  1. 暂无评论
ok 不同模板 switch ($forum['model']) { /*case '0': include _include(APP_PATH . 'view/htm/read.htm'); break;*/ default: include _include(theme_load('read', $fid)); break; } } break; case '10': // 主题外链 / thread external link http_location(htmlspecialchars_decode(trim($thread['description']))); break; case '11': // 单页 / single page $attachlist = array(); $imagelist = array(); $thread['filelist'] = array(); $threadlist = NULL; $thread['files'] > 0 and list($attachlist, $imagelist, $thread['filelist']) = well_attach_find_by_tid($tid); $data = data_read_cache($tid); empty($data) and message(-1, lang('data_malformation')); $tidlist = $forum['threads'] ? page_find_by_fid($fid, $page, $pagesize) : NULL; if ($tidlist) { $tidarr = arrlist_values($tidlist, 'tid'); $threadlist = well_thread_find($tidarr, $pagesize); // 按之前tidlist排序 $threadlist = array2_sort_key($threadlist, $tidlist, 'tid'); } $allowpost = forum_access_user($fid, $gid, 'allowpost'); $allowupdate = forum_access_mod($fid, $gid, 'allowupdate'); $allowdelete = forum_access_mod($fid, $gid, 'allowdelete'); $access = array('allowpost' => $allowpost, 'allowupdate' => $allowupdate, 'allowdelete' => $allowdelete); $header['title'] = $thread['subject']; $header['mobile_link'] = $thread['url']; $header['keywords'] = $thread['keyword'] ? $thread['keyword'] : $thread['subject']; $header['description'] = $thread['description'] ? $thread['description'] : $thread['brief']; $_SESSION['fid'] = $fid; if ($ajax) { empty($conf['api_on']) and message(0, lang('closed')); $apilist['header'] = $header; $apilist['extra'] = $extra; $apilist['access'] = $access; $apilist['thread'] = well_thread_safe_info($thread); $apilist['thread_data'] = $data; $apilist['forum'] = $forum; $apilist['imagelist'] = $imagelist; $apilist['filelist'] = $thread['filelist']; $apilist['threadlist'] = $threadlist; message(0, $apilist); } else { include _include(theme_load('single_page', $fid)); } break; default: message(-1, lang('data_malformation')); break; } ?>